Add strict/warnings test, adjust all offenders (wow, that was a lot)
[dbsrgits/DBIx-Class.git] / t / cdbi / 98-failure.t
1 use strict;
2 use warnings;
3 use Test::More;
4
5 #----------------------------------------------------------------------
6 # Test database failures
7 #----------------------------------------------------------------------
8
9 use lib 't/cdbi/testlib';
10 use Film;
11
12 Film->create_test_film;
13
14 {
15   my $btaste = Film->retrieve('Bad Taste');
16   isa_ok $btaste, 'Film', "We have Bad Taste";
17   {
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";
22   }
23   my $still = Film->retrieve('Bad Taste');
24   isa_ok $btaste, 'Film', "We still have Bad Taste";
25 }
26
27 {
28   my $btaste = Film->retrieve('Bad Taste');
29   isa_ok $btaste, 'Film', "We have Bad Taste";
30   $btaste->numexplodingsheep(10);
31   {
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";
36   }
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";
41 }
42
43 if (0) {
44   my $sheep = Film->maximum_value_of('numexplodingsheep');
45   is $sheep, 1, "1 exploding sheep";
46   {
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";
51   }
52 }
53
54 done_testing;