handle the throw_exception bit. Drop DBIx::Class::Exception
[dbsrgits/DBIx-Class.git] / t / cdbi-t / 98-failure.t
CommitLineData
5a66aa65 1use strict;
2use Test::More;
3
4#----------------------------------------------------------------------
5# Test database failures
6#----------------------------------------------------------------------
7
8BEGIN {
9 eval "use DBD::SQLite";
10 plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 7);
11}
12
13use lib 't/testlib';
14use Film;
15
16Film->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
47if (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