edce8a306d05bdb72f0d5a925fde4ff4770fb03d
[dbsrgits/DBIx-Class.git] / t / cdbi-t / 14-might_have.t
1 use strict;
2 use Test::More;
3
4 BEGIN {
5         eval "use DBD::SQLite";
6         plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 18);
7 }
8
9 use lib 't/testlib';
10 use Film;
11 use Blurb;
12
13 is(Blurb->primary_column, "title", "Primary key of Blurb = title");
14 is_deeply [ Blurb->columns('Essential') ], [ Blurb->primary_column ], "Essential = Primary";
15
16 eval { Blurb->retrieve(10) };
17 is $@, "", "No problem retrieving non-existent Blurb";
18
19 Film->might_have(info => Blurb => qw/blurb/);
20
21 Film->create_test_film;
22
23 {
24         ok my $bt = Film->retrieve('Bad Taste'), "Get Film";
25         isa_ok $bt, "Film";
26         is $bt->info, undef, "No blurb yet";
27         # bug where we couldn't write a class with a might_have that didn't_have
28         $bt->rating(16);
29         eval { $bt->update };
30         is $@, '', "No problems updating when don't have";
31         is $bt->rating, 16, "Updated OK";
32
33         is $bt->blurb, undef, "Bad taste has no blurb";
34         $bt->blurb("Wibble bar");
35         $bt->update;
36         is $bt->blurb, "Wibble bar", "And we can write the info";
37 }
38
39 {
40         my $bt   = Film->retrieve('Bad Taste');
41         my $info = $bt->info;
42         isa_ok $info, 'Blurb';
43
44         is $bt->blurb, $info->blurb, "Blurb is the same as fetching the long way";
45         ok $bt->blurb("New blurb"), "We can set the blurb";
46         $bt->update;
47         is $bt->blurb, $info->blurb, "Blurb has been set";
48
49         $bt->rating(18);
50         eval { $bt->update };
51         is $@, '', "No problems updating when do have";
52         is $bt->rating, 18, "Updated OK";
53
54         # cascade delete?
55         {
56                 my $blurb = Blurb->retrieve('Bad Taste');
57                 isa_ok $blurb => "Blurb";
58                 $bt->delete;
59                 $blurb = Blurb->retrieve('Bad Taste');
60                 is $blurb, undef, "Blurb has gone";
61         }
62                 
63 }
64
65