Shuffle delete tests, and sanify the delete related ones
[dbsrgits/DBIx-Class.git] / t / delete / related.t
1 use Test::More;
2 use strict;
3 use warnings;
4 use lib qw(t/lib);
5 use DBICTest;
6
7 plan tests => 3;
8
9 my $schema = DBICTest->init_schema();
10
11 my $ars = $schema->resultset('Artist');
12 my $cdrs = $schema->resultset('CD');
13
14 # create some custom entries
15 $ars->create ({ artistid => 9, name => 'dead man walking' });
16 $cdrs->populate ([
17   [qw/cdid artist title   year/],
18   [qw/70   2      delete0 2005/],
19   [qw/71   3      delete1 2005/],
20   [qw/72   3      delete2 2005/],
21   [qw/73   3      delete3 2006/],
22   [qw/74   3      delete4 2007/],
23   [qw/75   9      delete5 2008/],
24 ]);
25
26 my $total_cds = $cdrs->count;
27
28 # test that delete_related w/o conditions deletes all related records only
29 $ars->find (9)->delete_related ('cds');
30 is ($cdrs->count, $total_cds -= 1, 'related delete ok');
31
32 my $a3_cds = $ars->find(3)->cds;
33
34 # test that related deletion w/conditions deletes just the matched related records only
35 $a3_cds->search ({ year => 2005 })->delete;
36 is ($cdrs->count, $total_cds -= 2, 'related + condition delete ok');
37
38 # test that related deletion with limit condition works
39 $a3_cds->search ({}, { rows => 1})->delete;
40 is ($cdrs->count, $total_cds -= 1, 'related + limit delete ok');