use
lib
't/cdbi/testlib'
;
sub
create_trigger2 { ::ok(1,
"Running create trigger 2"
); }
sub
delete_trigger { ::ok(1,
"Deleting "
.
shift
->Title) }
sub
pre_up_trigger {
$_
[0]->_attribute_set(
numexplodingsheep
=> 1);
::ok(1,
"Running pre-update trigger"
);
}
sub
pst_up_trigger { ::ok(1,
"Running post-update trigger"
); }
sub
default_rating {
$_
[0]->Rating(15); }
Film->add_trigger(
before_create
=> \
&default_rating
);
Film->add_trigger(
after_create
=> \
&create_trigger2
);
Film->add_trigger(
after_delete
=> \
&delete_trigger
);
Film->add_trigger(
before_update
=> \
&pre_up_trigger
);
Film->add_trigger(
after_update
=> \
&pst_up_trigger
);
ok(
my
$ver
= Film->create({
title
=>
'La Double Vie De Veronique'
,
director
=>
'Kryzstof Kieslowski'
,
numexplodingsheep
=> 0,
}
),
"Create Veronique"
);
is
$ver
->Rating, 15,
"Default rating"
;
is
$ver
->NumExplodingSheep, 0,
"Original sheep count"
;
ok
$ver
->Rating(
'12'
) &&
$ver
->update,
"Change the rating"
;
is
$ver
->NumExplodingSheep, 1,
"Updated object's sheep count"
;
is + (
$ver
->db_Main->selectall_arrayref(
'SELECT numexplodingsheep FROM '
.
$ver
->table
.
' WHERE '
.
$ver
->primary_column .
' = '
.
$ver
->db_Main->quote(
$ver
->id))
)->[0]->[0], 1,
"Updated database's sheep count"
;
ok
$ver
->
delete
,
"Delete"
;
{
Film->add_trigger(
before_create
=>
sub
{
my
$self
=
shift
;
ok !
$self
->_attribute_exists(
'title'
),
"PK doesn't auto-vivify"
;
});
Film->create({
director
=>
"Me"
});
}
done_testing;