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