Switch CDBICompat and its tests to OptDeps
[dbsrgits/DBIx-Class.git] / t / cdbi / 11-triggers.t
1 use DBIx::Class::Optional::Dependencies -skip_all_without => 'cdbicompat';
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7
8 use lib 't/cdbi/testlib';
9 use Film;
10
11 sub create_trigger2 { ::ok(1, "Running create trigger 2"); }
12 sub delete_trigger  { ::ok(1, "Deleting " . shift->Title) }
13
14 sub pre_up_trigger {
15   $_[0]->_attribute_set(numexplodingsheep => 1);
16   ::ok(1, "Running pre-update trigger");
17 }
18 sub pst_up_trigger { ::ok(1, "Running post-update trigger"); }
19
20 sub default_rating { $_[0]->Rating(15); }
21
22 Film->add_trigger(before_create => \&default_rating);
23 Film->add_trigger(after_create  => \&create_trigger2);
24 Film->add_trigger(after_delete  => \&delete_trigger);
25 Film->add_trigger(before_update => \&pre_up_trigger);
26 Film->add_trigger(after_update  => \&pst_up_trigger);
27
28 ok(
29   my $ver = Film->create({
30       title    => 'La Double Vie De Veronique',
31       director => 'Kryzstof Kieslowski',
32
33       # rating           => '15',
34       numexplodingsheep => 0,
35     }
36   ),
37   "Create Veronique"
38 );
39
40 is $ver->Rating,            15, "Default rating";
41 is $ver->NumExplodingSheep, 0,  "Original sheep count";
42 ok $ver->Rating('12') && $ver->update, "Change the rating";
43 is $ver->NumExplodingSheep, 1, "Updated object's sheep count";
44 is + (
45   $ver->db_Main->selectall_arrayref(
46         'SELECT numexplodingsheep FROM '
47       . $ver->table
48       . ' WHERE '
49       . $ver->primary_column . ' = '
50       . $ver->db_Main->quote($ver->id))
51 )->[0]->[0], 1, "Updated database's sheep count";
52 ok $ver->delete, "Delete";
53
54 {
55   Film->add_trigger(before_create => sub {
56     my $self = shift;
57     ok !$self->_attribute_exists('title'), "PK doesn't auto-vivify";
58   });
59   Film->create({director => "Me"});
60 }
61
62 done_testing;