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