Switch CDBICompat and its tests to OptDeps
[dbsrgits/DBIx-Class-Historic.git] / t / cdbi / 11-triggers.t
CommitLineData
83eef562 1use DBIx::Class::Optional::Dependencies -skip_all_without => 'cdbicompat';
2
510ca912 3use strict;
4a233f30 4use warnings;
83eef562 5
510ca912 6use Test::More;
7
50891152 8use lib 't/cdbi/testlib';
510ca912 9use Film;
10
11sub create_trigger2 { ::ok(1, "Running create trigger 2"); }
12sub delete_trigger { ::ok(1, "Deleting " . shift->Title) }
13
14sub pre_up_trigger {
6a3bf251 15 $_[0]->_attribute_set(numexplodingsheep => 1);
16 ::ok(1, "Running pre-update trigger");
510ca912 17}
18sub pst_up_trigger { ::ok(1, "Running post-update trigger"); }
19
20sub default_rating { $_[0]->Rating(15); }
21
1543db24 22Film->add_trigger(before_create => \&default_rating);
23Film->add_trigger(after_create => \&create_trigger2);
24Film->add_trigger(after_delete => \&delete_trigger);
25Film->add_trigger(before_update => \&pre_up_trigger);
26Film->add_trigger(after_update => \&pst_up_trigger);
510ca912 27
28ok(
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
40is $ver->Rating, 15, "Default rating";
41is $ver->NumExplodingSheep, 0, "Original sheep count";
42ok $ver->Rating('12') && $ver->update, "Change the rating";
43is $ver->NumExplodingSheep, 1, "Updated object's sheep count";
44is + (
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";
52ok $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
62done_testing;