Fix _select_for_update/delete - bring back old code, use subqueries only when results...
[dbsrgits/DBIx-Class.git] / t / delete / related.t
CommitLineData
157fdb0c 1use Test::More;
2use strict;
3use warnings;
4use lib qw(t/lib);
5use DBICTest;
6
7plan tests => 3;
8
9my $schema = DBICTest->init_schema();
10
11my $ars = $schema->resultset('Artist');
12my $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
26my $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');
30is ($cdrs->count, $total_cds -= 1, 'related delete ok');
31
32my $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;
36is ($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;
40is ($cdrs->count, $total_cds -= 1, 'related + limit delete ok');