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