Commit | Line | Data |
83eef562 |
1 | use DBIx::Class::Optional::Dependencies -skip_all_without => 'cdbicompat'; |
2 | |
510ca912 |
3 | use strict; |
4a233f30 |
4 | use warnings; |
83eef562 |
5 | |
510ca912 |
6 | use Test::More; |
7 | |
50891152 |
8 | use lib 't/cdbi/testlib'; |
510ca912 |
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 { |
6a3bf251 |
15 | $_[0]->_attribute_set(numexplodingsheep => 1); |
16 | ::ok(1, "Running pre-update trigger"); |
510ca912 |
17 | } |
18 | sub pst_up_trigger { ::ok(1, "Running post-update trigger"); } |
19 | |
20 | sub default_rating { $_[0]->Rating(15); } |
21 | |
1543db24 |
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); |
510ca912 |
27 | |
28 | ok( |
6a3bf251 |
29 | my $ver = Film->create({ |
30 | title => 'La Double Vie De Veronique', |
31 | director => 'Kryzstof Kieslowski', |
510ca912 |
32 | |
6a3bf251 |
33 | # rating => '15', |
34 | numexplodingsheep => 0, |
35 | } |
36 | ), |
37 | "Create Veronique" |
510ca912 |
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 + ( |
6a3bf251 |
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)) |
510ca912 |
51 | )->[0]->[0], 1, "Updated database's sheep count"; |
52 | ok $ver->delete, "Delete"; |
53 | |
54 | { |
8273e845 |
55 | Film->add_trigger(before_create => sub { |
6a3bf251 |
56 | my $self = shift; |
57 | ok !$self->_attribute_exists('title'), "PK doesn't auto-vivify"; |
58 | }); |
59 | Film->create({director => "Me"}); |
510ca912 |
60 | } |
d9bd5195 |
61 | |
62 | done_testing; |