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