5 #----------------------------------------------------------------------
6 # Test database failures
7 #----------------------------------------------------------------------
9 use lib 't/cdbi/testlib';
12 Film->create_test_film;
15 my $btaste = Film->retrieve('Bad Taste');
16 isa_ok $btaste, 'Film', "We have Bad Taste";
18 no warnings 'redefine';
19 local *DBIx::ContextualFetch::st::execute = sub { die "Database died" };
20 eval { $btaste->delete };
21 ::like $@, qr/Database died/s, "We failed";
23 my $still = Film->retrieve('Bad Taste');
24 isa_ok $btaste, 'Film', "We still have Bad Taste";
28 my $btaste = Film->retrieve('Bad Taste');
29 isa_ok $btaste, 'Film', "We have Bad Taste";
30 $btaste->numexplodingsheep(10);
32 no warnings 'redefine';
33 local *DBIx::ContextualFetch::st::execute = sub { die "Database died" };
34 eval { $btaste->update };
35 ::like $@, qr/Database died/s, "We failed";
37 $btaste->discard_changes;
38 my $still = Film->retrieve('Bad Taste');
39 isa_ok $btaste, 'Film', "We still have Bad Taste";
40 is $btaste->numexplodingsheep, 1, "with 1 sheep";
44 my $sheep = Film->maximum_value_of('numexplodingsheep');
45 is $sheep, 1, "1 exploding sheep";
47 local *DBIx::ContextualFetch::st::execute = sub { die "Database died" };
48 my $sheep = eval { Film->maximum_value_of('numexplodingsheep') };
49 ::like $@, qr/select.*Database died/s,
50 "Handle database death in single value select";