Commit | Line | Data |
b41bacc7 |
1 | use Test::More tests => 24; |
86d6940e |
2 | |
3 | BEGIN { |
4 | use lib 't/lib'; |
5 | use_ok( 'DBICx::TestDatabase'); # test 1 |
6 | use_ok( 'TestDB' ); # test 2 |
7 | |
8 | } |
9 | |
10 | sub _check_column { # each call to this = 7 tests |
11 | my $col = shift; |
12 | my $name = shift; |
13 | ok(ref($col) =~ /^Object::Enum::/,qq($name: refereces Object::Enum)); |
14 | ok($col->can('set_red'),qq($name: has correct set method)); |
15 | ok($col->set_red,qq($name: set method contained a value)); |
16 | ok($col->is_red,qq($name: boolean return true for correct set value)); |
17 | ok($col->value eq 'red',qq($name: value access returned correct string)); |
18 | ok(!$col->unset,qq($name: unset behaved as expected)); |
19 | ok(!defined($col->value),qq($name: unset has modifed value accessor as expected)); |
20 | } |
21 | |
22 | my $rs; |
23 | my $db = new DBICx::TestDatabase('TestDB'); |
24 | |
25 | ok(ref($db) eq 'TestDB','Testing database looks good'); |
26 | |
27 | $rs = $db->resultset('VarcharEnumNullable')->create({id=>0}); |
28 | ok(defined($rs),'VarcharEnumNullable: create returned as expected'); # test 3 |
29 | ok(!defined($rs->enum),'VarcharEnumNullable: enum column is null as expected'); # test 4 |
30 | |
31 | $rs->enum(''); # initialize inflated object for nullable |
32 | _check_column($rs->enum,$rs->result_source->source_name); # tests 5 thru 12 |
33 | |
34 | undef $rs; |
35 | eval(q/$db->resultset('VarcharEnumNoneNullable')->create({id=>1})/); |
36 | ok(defined($@),'VarcharEnumNoneNullable(null enum): create with null enum failed as expected'); # test 13 |
37 | |
b41bacc7 |
38 | # commented tests now conflict with expected behavior |
39 | #$rs = $db->resultset('VarcharEnumNoneNullable')->create({id=>2,enum=>'none'}); |
40 | #ok(defined($rs),'VarcharEnumNoneNullable(invalid enum): create with invalid enum returns row as expected'); # test 14 |
41 | #_check_column($rs->enum,$rs->result_source->source_name.'(invalid enum)'); # tests 15 thru 21 |
86d6940e |
42 | |
b41bacc7 |
43 | #undef $rs; |
44 | #$rs = $db->resultset('VarcharEnumNoneNullable')->create({id=>3,enum=>'none'}); |
45 | #ok($rs->enum->value ne 'none','VarcharEnumNoneNullable(invalid enum) value return undef on valid as expected'); # test 22 |
86d6940e |
46 | |
47 | undef $rs; |
48 | $rs = $db->resultset('VarcharEnumNoneNullable')->create({id=>4,enum=>'red'}); |
49 | ok($rs->enum->is_red,'VarcharEnumNoneNullable(valid enum) defined correctly'); # test 23 |
50 | |
51 | undef $rs; |
52 | $rs = $db->resultset('NativeEnumNullable')->create({id=>5}); |
53 | ok(defined($rs),'NativeEnumNullable: create returned as expected'); # test 24 |
54 | ok(!defined($rs->enum),'NativeEnumNullable: enum column is null as expected'); # test 25 |
55 | |
56 | $rs->enum(''); # initialize inflated object for nullable |
57 | _check_column($rs->enum,$rs->result_source->source_name); # tests 26 thru 32 |
58 | |
59 | undef $rs; |
60 | eval(q/$db->resultset('NativeEnumNoneNullable')->create({id=>6})/); |
61 | ok(defined($@),'NativeEnumNoneNullable(null enum): create with null enum failed as expected'); # test 33 |
62 | |