Remove useless INIT blocks from CDBI tests - no changes
[dbsrgits/DBIx-Class.git] / t / cdbi / 23-cascade.t
CommitLineData
37702ea5 1use strict;
4a233f30 2use warnings;
37702ea5 3use Test::More;
dec1bfe0 4use Data::Dumper;
37702ea5 5
a40329c4 6use lib 't/cdbi/testlib';
7use Film;
8use Director;
deff792e 9
10{ # Cascade on delete
11 Director->has_many(nasties => 'Film');
12
13 my $dir = Director->insert({
14 name => "Lewis Teague",
15 });
16 my $kk = $dir->add_to_nasties({
17 Title => 'Alligator'
18 });
19 is $kk->director, $dir, "Director set OK";
20 is $dir->nasties, 1, "We have one nasty";
21
22 ok $dir->delete;
23 ok !Film->retrieve("Alligator"), "has_many cascade deletes by default";
24}
25
26
27# Two ways of saying not to cascade
28for my $args ({ no_cascade_delete => 1 }, { cascade => "None" }) {
29 Director->has_many(nasties => 'Film', $args);
30
31 my $dir = Director->insert({
32 name => "Lewis Teague",
33 });
34 my $kk = $dir->add_to_nasties({
35 Title => 'Alligator'
36 });
37 is $kk->director, $dir, "Director set OK";
38 is $dir->nasties, 1, "We have one nasty";
39
40 ok $dir->delete;
dec1bfe0 41 local $Data::Dumper::Terse = 1;
42 ok +Film->retrieve("Alligator"), 'has_many with ' . Dumper ($args);;
deff792e 43 $kk->delete;
44}
45
46
47#{ # Fail on cascade
48# local $TODO = 'cascade => "Fail" unimplemented';
8273e845 49#
deff792e 50# Director->has_many(nasties => Film => { cascade => 'Fail' });
51#
52# my $dir = Director->insert({ name => "Nasty Noddy" });
53# my $kk = $dir->add_to_nasties({ Title => 'Killer Killers' });
54# is $kk->director, $dir, "Director set OK";
55# is $dir->nasties, 1, "We have one nasty";
56#
57# ok !eval { $dir->delete };
58# like $@, qr/1/, "Can't delete while films exist";
59#
60# my $rr = $dir->add_to_nasties({ Title => 'Revenge of the Revengers' });
61# ok !eval { $dir->delete };
62# like $@, qr/2/, "Still can't delete";
63#
64# $dir->nasties->delete_all;
65# ok eval { $dir->delete };
66# is $@, '', "Can delete once films are gone";
67#}
d9bd5195 68
69done_testing;