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