cascade delete test from Class-DBI 3.0.17
Michael G Schwern [Thu, 14 Feb 2008 09:57:52 +0000 (01:57 -0800)]
t/cdbi-t/23-cascade.t [new file with mode: 0644]

diff --git a/t/cdbi-t/23-cascade.t b/t/cdbi-t/23-cascade.t
new file mode 100644 (file)
index 0000000..7e17419
--- /dev/null
@@ -0,0 +1,28 @@
+use strict;
+use Test::More;
+
+BEGIN {
+       eval "use DBD::SQLite";
+       plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 5);
+}
+
+use lib 't/testlib';
+use Film;
+use Director;
+
+{ # Cascade Strategies
+       Director->has_many(nasties => Film => { cascade => 'Fail' });
+
+       my $dir = Director->insert({ name => "Nasty Noddy" });
+       my $kk = $dir->add_to_nasties({ Title => 'Killer Killers' });
+       is $kk->director, $dir, "Director set OK";
+       is $dir->nasties, 1, "We have one nasty";
+       eval { $dir->delete };
+       like $@, qr/1/, "Can't delete while films exist";
+       my $rr = $dir->add_to_nasties({ Title => 'Revenge of the Revengers' });
+       eval { $dir->delete };
+       like $@, qr/2/, "Still can't delete";
+       $dir->nasties->delete_all;
+       eval { $dir->delete };
+       is $@, '', "Can delete once films are gone";
+}