Commit | Line | Data |
5a66aa65 |
1 | use strict; |
2 | use Test::More; |
3 | |
4 | #---------------------------------------------------------------------- |
5 | # Test database failures |
6 | #---------------------------------------------------------------------- |
7 | |
8 | BEGIN { |
48e8a885 |
9 | eval "use DBIx::Class::CDBICompat;"; |
10 | if ($@) { |
11 | plan (skip_all => 'Class::Trigger and DBIx::ContextualFetch required'); |
48e8a885 |
12 | } |
68de9438 |
13 | plan tests => 7; |
5a66aa65 |
14 | } |
15 | |
50891152 |
16 | use lib 't/cdbi/testlib'; |
5a66aa65 |
17 | use Film; |
18 | |
19 | Film->create_test_film; |
20 | |
21 | { |
6a3bf251 |
22 | my $btaste = Film->retrieve('Bad Taste'); |
23 | isa_ok $btaste, 'Film', "We have Bad Taste"; |
24 | { |
25 | no warnings 'redefine'; |
26 | local *DBIx::ContextualFetch::st::execute = sub { die "Database died" }; |
27 | eval { $btaste->delete }; |
28 | ::like $@, qr/Database died/s, "We failed"; |
29 | } |
30 | my $still = Film->retrieve('Bad Taste'); |
31 | isa_ok $btaste, 'Film', "We still have Bad Taste"; |
5a66aa65 |
32 | } |
33 | |
34 | { |
6a3bf251 |
35 | my $btaste = Film->retrieve('Bad Taste'); |
36 | isa_ok $btaste, 'Film', "We have Bad Taste"; |
37 | $btaste->numexplodingsheep(10); |
38 | { |
39 | no warnings 'redefine'; |
40 | local *DBIx::ContextualFetch::st::execute = sub { die "Database died" }; |
41 | eval { $btaste->update }; |
42 | ::like $@, qr/Database died/s, "We failed"; |
43 | } |
44 | $btaste->discard_changes; |
45 | my $still = Film->retrieve('Bad Taste'); |
46 | isa_ok $btaste, 'Film', "We still have Bad Taste"; |
47 | is $btaste->numexplodingsheep, 1, "with 1 sheep"; |
5a66aa65 |
48 | } |
49 | |
50 | if (0) { |
6a3bf251 |
51 | my $sheep = Film->maximum_value_of('numexplodingsheep'); |
52 | is $sheep, 1, "1 exploding sheep"; |
53 | { |
54 | local *DBIx::ContextualFetch::st::execute = sub { die "Database died" }; |
55 | my $sheep = eval { Film->maximum_value_of('numexplodingsheep') }; |
56 | ::like $@, qr/select.*Database died/s, |
57 | "Handle database death in single value select"; |
58 | } |
5a66aa65 |
59 | } |
60 | |