Commit | Line | Data |
86d6940e |
1 | use Test::More tests => 33; |
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 | |
38 | $rs = $db->resultset('VarcharEnumNoneNullable')->create({id=>2,enum=>'none'}); |
39 | ok(defined($rs),'VarcharEnumNoneNullable(invalid enum): create with invalid enum returns row as expected'); # test 14 |
40 | _check_column($rs->enum,$rs->result_source->source_name.'(invalid enum)'); # tests 15 thru 21 |
41 | |
42 | undef $rs; |
43 | $rs = $db->resultset('VarcharEnumNoneNullable')->create({id=>3,enum=>'none'}); |
44 | ok($rs->enum->value ne 'none','VarcharEnumNoneNullable(invalid enum) value return undef on valid as expected'); # test 22 |
45 | |
46 | undef $rs; |
47 | $rs = $db->resultset('VarcharEnumNoneNullable')->create({id=>4,enum=>'red'}); |
48 | ok($rs->enum->is_red,'VarcharEnumNoneNullable(valid enum) defined correctly'); # test 23 |
49 | |
50 | undef $rs; |
51 | $rs = $db->resultset('NativeEnumNullable')->create({id=>5}); |
52 | ok(defined($rs),'NativeEnumNullable: create returned as expected'); # test 24 |
53 | ok(!defined($rs->enum),'NativeEnumNullable: enum column is null as expected'); # test 25 |
54 | |
55 | $rs->enum(''); # initialize inflated object for nullable |
56 | _check_column($rs->enum,$rs->result_source->source_name); # tests 26 thru 32 |
57 | |
58 | undef $rs; |
59 | eval(q/$db->resultset('NativeEnumNoneNullable')->create({id=>6})/); |
60 | ok(defined($@),'NativeEnumNoneNullable(null enum): create with null enum failed as expected'); # test 33 |
61 | |