X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=t%2Fdb_colinfo.t;fp=t%2Fdb_colinfo.t;h=2b341eb699c1a6e279ce2c25b2c253c8da47c390;hb=695634a55e7a5293c9b5197d9d6b93245ff3ff14;hp=b387769c9e8e9e8edf54f896211dea92c013c7f4;hpb=90b7b082066bee6303621aab49b166546445085c;p=maypole.git diff --git a/t/db_colinfo.t b/t/db_colinfo.t index b387769..2b341eb 100755 --- a/t/db_colinfo.t +++ b/t/db_colinfo.t @@ -3,7 +3,7 @@ use Test::More; use Data::Dumper; use lib 'ex'; # Where BeerDB should live BEGIN { - plan tests => 35; + plan tests => 65; } $db = 'test'; @@ -67,8 +67,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 +123,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/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 +187,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)"); + } + } + };