Introduce GOVERNANCE document and empty RESOLUTIONS file.
[dbsrgits/DBIx-Class.git] / t / cdbi / 98-failure.t
1 BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
2 use DBIx::Class::Optional::Dependencies -skip_all_without => 'cdbicompat';
3
4 use strict;
5 use warnings;
6
7 use Test::More;
8
9 #----------------------------------------------------------------------
10 # Test database failures
11 #----------------------------------------------------------------------
12
13 use lib 't/cdbi/testlib';
14 use Film;
15
16 Film->create_test_film;
17
18 {
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";
29 }
30
31 {
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";
45 }
46
47 if (0) {
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   }
56 }
57
58 done_testing;