Commit | Line | Data |
37702ea5 |
1 | use strict; |
2 | use Test::More; |
3 | |
4 | BEGIN { |
deff792e |
5 | eval "use DBIx::Class::CDBICompat;"; |
6 | if ($@) { |
7 | plan (skip_all => 'Class::Trigger and DBIx::ContextualFetch required'); |
8 | next; |
9 | } |
10 | eval "use DBD::SQLite"; |
11 | plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 12); |
37702ea5 |
12 | } |
13 | |
deff792e |
14 | INIT { |
15 | use lib 't/testlib'; |
16 | use Film; |
17 | use Director; |
37702ea5 |
18 | } |
deff792e |
19 | |
20 | { # Cascade on delete |
21 | Director->has_many(nasties => 'Film'); |
22 | |
23 | my $dir = Director->insert({ |
24 | name => "Lewis Teague", |
25 | }); |
26 | my $kk = $dir->add_to_nasties({ |
27 | Title => 'Alligator' |
28 | }); |
29 | is $kk->director, $dir, "Director set OK"; |
30 | is $dir->nasties, 1, "We have one nasty"; |
31 | |
32 | ok $dir->delete; |
33 | ok !Film->retrieve("Alligator"), "has_many cascade deletes by default"; |
34 | } |
35 | |
36 | |
37 | # Two ways of saying not to cascade |
38 | for my $args ({ no_cascade_delete => 1 }, { cascade => "None" }) { |
39 | Director->has_many(nasties => 'Film', $args); |
40 | |
41 | my $dir = Director->insert({ |
42 | name => "Lewis Teague", |
43 | }); |
44 | my $kk = $dir->add_to_nasties({ |
45 | Title => 'Alligator' |
46 | }); |
47 | is $kk->director, $dir, "Director set OK"; |
48 | is $dir->nasties, 1, "We have one nasty"; |
49 | |
50 | ok $dir->delete; |
51 | ok +Film->retrieve("Alligator"), "has_many with @{[ keys %$args ]} => @{[ values %$args ]}"; |
52 | $kk->delete; |
53 | } |
54 | |
55 | |
56 | #{ # Fail on cascade |
57 | # local $TODO = 'cascade => "Fail" unimplemented'; |
58 | # |
59 | # Director->has_many(nasties => Film => { cascade => 'Fail' }); |
60 | # |
61 | # my $dir = Director->insert({ name => "Nasty Noddy" }); |
62 | # my $kk = $dir->add_to_nasties({ Title => 'Killer Killers' }); |
63 | # is $kk->director, $dir, "Director set OK"; |
64 | # is $dir->nasties, 1, "We have one nasty"; |
65 | # |
66 | # ok !eval { $dir->delete }; |
67 | # like $@, qr/1/, "Can't delete while films exist"; |
68 | # |
69 | # my $rr = $dir->add_to_nasties({ Title => 'Revenge of the Revengers' }); |
70 | # ok !eval { $dir->delete }; |
71 | # like $@, qr/2/, "Still can't delete"; |
72 | # |
73 | # $dir->nasties->delete_all; |
74 | # ok eval { $dir->delete }; |
75 | # is $@, '', "Can delete once films are gone"; |
76 | #} |