]> git.decadent.org.uk Git - maypole.git/blobdiff - t/db_colinfo.t
changes to get/set default columns and column metadata
[maypole.git] / t / db_colinfo.t
index 471d05986906b9be754d0462131088471fbbd909..b387769c9e8e9e8edf54f896211dea92c013c7f4 100755 (executable)
@@ -1,5 +1,6 @@
 #!/usr/bin/perl -w
 use Test::More;
+use Data::Dumper;
 use lib 'ex'; # Where BeerDB should live
 BEGIN {
    plan tests => 35;
@@ -56,7 +57,7 @@ create table $table (
                  brewery   => 1, 
                  modified      => 1,
                  style         => 0,   
-                     name      => 0, 
+                 name      => 0, 
                  tasted    => 0,
 );
 
@@ -76,6 +77,7 @@ sub run_method_tests {
     my $correct = $correct{$col};
     like($val, qr/$correct/,"$method $col is $val");
   }
+
 }
 
 
@@ -83,29 +85,33 @@ sub run_method_tests {
 
 # Make test class 
 package BeerDB::BeerTestmysql;
-use base Maypole::Model::CDBI;
+use base qw(Maypole::Model::CDBI Class::DBI);
 package main;
 
 $DB_Class = 'BeerDB::BeerTestmysql';
 
-my $drh = DBI->install_driver("mysql");
-my %databases = map { $_ => 1 } $drh->func('localhost', 3306, '_ListDBs');
+my $drh = eval { DBI->install_driver("mysql"); };
+$err = $@;
+if ($err) {
+  $skip_msg = "no driver for MySQL";
+} else {
+  my %databases = map { $_ => 1 } $drh->func('localhost', 3306, '_ListDBs');
 
-unless ($databases{test}) {
-  my $rc = $drh->func("createdb", 'test', 'admin');
-}
+  unless ($databases{test}) {
+    my $rc = $drh->func("createdb", 'test', 'admin');
+  }
 
-%databases = map { $_ => 1 } $drh->func('localhost', 3306, '_ListDBs');
+  %databases = map { $_ => 1 } $drh->func('localhost', 3306, '_ListDBs');
 
-if ($databases{test}) {
-  eval {$DB_Class->connection("dbi:mysql:$db", "$dbuser", "$dbpasswd"); };
-  $err = $@;
-  $skip_msg = "Could not connect to MySQL using database 'test', username 'test', and password ''. Check privileges and try again.";
-} else {
-  $err = 'no test db';
-  $skip_msg = "Could not connect to MySQL using database 'test' as it doesn't exist, sorry";
+  if ($databases{test}) {
+    eval {$DB_Class->connection("dbi:mysql:$db", "$dbuser", "$dbpasswd"); };
+    $err = $@;
+    $skip_msg = "Could not connect to MySQL using database 'test', username 'test', and password ''. Check privileges and try again.";
+  } else {
+    $err = 'no test db';
+    $skip_msg = "Could not connect to MySQL using database 'test' as it doesn't exist, sorry";
+  }
 }
-
 $skip_howmany = 22;
 
 SKIP: {
@@ -113,6 +119,8 @@ SKIP: {
        $DB_Class->db_Main->do("drop table if exists $table;");
        $DB_Class->db_Main->do($sql);
        $DB_Class->table($table);
+       $DB_Class->columns(All => keys %correct_types);
+       $DB_Class->columns(Primary => 'id');
        run_method_tests($DB_Class,'column_type', %correct_types);
        run_method_tests($DB_Class,'column_default', %correct_defaults);
        run_method_tests($DB_Class,'column_nullable', %correct_nullables);
@@ -121,7 +129,7 @@ SKIP: {
 # SQLite  test
 
 package BeerDB::BeerTestsqlite;
-use base Maypole::Model::CDBI;
+use base qw(Maypole::Model::CDBI Class::DBI);
 package main;
 use Cwd;
 
@@ -148,6 +156,8 @@ $skip_howmany = 13;
 SKIP: {
        skip $skip_msg, $skip_howmany  if $err; 
        $DB_Class->table($table); 
+       $DB_Class->columns(All => keys %correct_types);
+       $DB_Class->columns(Primary => 'id');
 #use Data::Dumper; 
        run_method_tests($DB_Class,'column_type', %correct_types);
        # No support default