Commit | Line | Data |
157fdb0c |
1 | use Test::More; |
2 | use strict; |
3 | use warnings; |
4 | use lib qw(t/lib); |
5 | use DBICTest; |
6 | |
ff1234ad |
7 | plan tests => 3; |
157fdb0c |
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 |
ecef7b5e |
15 | $ars->populate ([ |
16 | [qw/artistid name/], |
17 | [qw/71 a1/], |
18 | [qw/72 a2/], |
19 | [qw/73 a3/], |
20 | ]); |
157fdb0c |
21 | $cdrs->populate ([ |
22 | [qw/cdid artist title year/], |
ecef7b5e |
23 | [qw/70 71 delete0 2005/], |
24 | [qw/71 72 delete1 2005/], |
25 | [qw/72 72 delete2 2005/], |
26 | [qw/73 72 delete3 2006/], |
27 | [qw/74 72 delete4 2007/], |
28 | [qw/75 73 delete5 2008/], |
157fdb0c |
29 | ]); |
30 | |
31 | my $total_cds = $cdrs->count; |
32 | |
33 | # test that delete_related w/o conditions deletes all related records only |
ecef7b5e |
34 | $ars->search ({name => 'a3' })->search_related ('cds')->delete; |
157fdb0c |
35 | is ($cdrs->count, $total_cds -= 1, 'related delete ok'); |
36 | |
ecef7b5e |
37 | my $a2_cds = $ars->search ({ name => 'a2' })->search_related ('cds'); |
157fdb0c |
38 | |
39 | # test that related deletion w/conditions deletes just the matched related records only |
ecef7b5e |
40 | $a2_cds->search ({ year => 2005 })->delete; |
157fdb0c |
41 | is ($cdrs->count, $total_cds -= 2, 'related + condition delete ok'); |
42 | |
43 | # test that related deletion with limit condition works |
ecef7b5e |
44 | $a2_cds->search ({}, { rows => 1})->delete; |
157fdb0c |
45 | is ($cdrs->count, $total_cds -= 1, 'related + limit delete ok'); |