]> git.decadent.org.uk Git - maypole.git/blobdiff - t/db_colinfo.t
made setting user() and session() backward compatible
[maypole.git] / t / db_colinfo.t
index b387769c9e8e9e8edf54f896211dea92c013c7f4..3b20f8dcd463376f32fc158047e0a184b5bb58d5 100755 (executable)
@@ -1,9 +1,17 @@
 #!/usr/bin/perl -w
 use Test::More;
 use Data::Dumper;
-use lib 'ex'; # Where BeerDB should live
+use DBI;
+use lib 'examples'; # Where BeerDB should live
 BEGIN {
-   plan tests => 35;
+       my $drh = eval {
+         DBI->install_driver("mysql");
+         my @databases = DBI->data_sources("mysql");
+         die "couldn't connect to mysql" unless (@databases);
+       };
+       warn "error : $@ \n" if ($@);
+        my $testcount = ($@) ? 45 : 64 ;
+        plan tests => $testcount;
 }
 
 $db            = 'test';
@@ -67,8 +75,7 @@ create table $table (
 sub run_method_tests { 
   ($class, $method,  %correct)  = @_;
   for $col (sort keys %correct) {
-#    warn "class : $class\n";
-#    warn "ISA : ", join(', ',@BeerDB::BeerTestmysql::ISA);
+
     $val = $class->$method($col);
 
     # Hacks for various val types
@@ -124,6 +131,29 @@ SKIP: {
        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);
+
+
+       foreach my $colname ( @{$DB_Class->required_columns()} ) {
+           ok($correct_nullables{$colname} == 0,"nullable column $colname is required (via required_columns)");
+       }
+
+       foreach my $colname (keys %correct_nullables) {
+         ok( $DB_Class->column_required($colname) == !$correct_nullables{$colname}, "nullable column $colname is required (via column_required)" )
+       }
+
+       ok($DB_Class->required_columns([qw/style name tasted score/]), 'set required column(s)');
+       
+       foreach my $colname ( @{$DB_Class->required_columns()} ) {
+           ok($correct_nullables{$colname} == 0 || $colname eq 'score',"nullable or required column $colname is required (via required_columns)" );
+       }
+       
+       foreach my $colname (keys %correct_nullables) {
+           if ($colname eq 'score') {
+               ok( $DB_Class->column_required($colname) == 0, "nullable column $colname is required (via column_required)");
+           } else {
+               ok( $DB_Class->column_required($colname) == !$correct_nullables{$colname}, "nullable column $colname is required (via column_required)");
+           }
+       }       
 };
 
 # SQLite  test
@@ -165,6 +195,21 @@ SKIP: {
        # I think sqlite driver allows everything to be nullable.
        #run_method_tests($DB_Class,'column_nullable', %correct_nullables);
 
+       ok($DB_Class->required_columns([qw/score style name tasted/]), 'set required column(s)');
+       
+
+       foreach my $colname ( @{$DB_Class->required_columns()} ) {
+           ok($correct_nullables{$colname} == 0 || $colname eq 'score',"nullable or required column $colname is required (via required_columns)" );
+       }
+       
+       foreach my $colname (keys %correct_nullables) {
+           if ($colname eq 'score') {
+               ok( $DB_Class->column_required($colname) == 0, "nullable column $colname is required (via column_required)");
+           } else {
+               ok( $DB_Class->column_required($colname) == !$correct_nullables{$colname}, "nullable column $colname is required (via column_required)");
+           }
+       }
+
 };