From: Peter Rabbitson Date: Tue, 12 May 2009 07:42:45 +0000 (+0000) Subject: Shuffle delete tests, and sanify the delete related ones X-Git-Tag: v0.08103~98 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=157fdb0cae2758f6f97dbe33c25f469fea0c777e;p=dbsrgits%2FDBIx-Class.git Shuffle delete tests, and sanify the delete related ones --- diff --git a/t/53delete_related.t b/t/53delete_related.t deleted file mode 100644 index 4df8698..0000000 --- a/t/53delete_related.t +++ /dev/null @@ -1,30 +0,0 @@ -use Test::More; -use strict; -use warnings; -use lib qw(t/lib); -use DBICTest; - -plan tests => 7; - -my $schema = DBICTest->init_schema(); -my $total_cds = $schema->resultset('CD')->count; -cmp_ok($total_cds, '>', 0, 'need cd records'); - -# test that delete_related w/o conditions deletes all related records only -my $artist = $schema->resultset("Artist")->find(3); -my $artist_cds = $artist->cds->count; -cmp_ok($artist_cds, '<', $total_cds, 'need more cds than just related cds'); - -ok($artist->delete_related('cds')); -cmp_ok($schema->resultset('CD')->count, '==', ($total_cds - $artist_cds), 'wrong number of cds were deleted'); - -$total_cds -= $artist_cds; - -# test that delete_related w/conditions deletes just the matched related records only -my $artist2 = $schema->resultset("Artist")->find(2); -my $artist2_cds = $artist2->search_related('cds')->count; -cmp_ok($artist2_cds, '<', $total_cds, 'need more cds than related cds'); - -ok($artist2->delete_related('cds', {title => {like => '%'}})); -cmp_ok($schema->resultset('CD')->count, '==', ($total_cds - $artist2_cds), 'wrong number of cds were deleted'); - diff --git a/t/deleting_many_to_many.t b/t/delete/m2m.t similarity index 100% rename from t/deleting_many_to_many.t rename to t/delete/m2m.t diff --git a/t/delete/related.t b/t/delete/related.t new file mode 100644 index 0000000..f3c8d9b --- /dev/null +++ b/t/delete/related.t @@ -0,0 +1,40 @@ +use Test::More; +use strict; +use warnings; +use lib qw(t/lib); +use DBICTest; + +plan tests => 3; + +my $schema = DBICTest->init_schema(); + +my $ars = $schema->resultset('Artist'); +my $cdrs = $schema->resultset('CD'); + +# create some custom entries +$ars->create ({ artistid => 9, name => 'dead man walking' }); +$cdrs->populate ([ + [qw/cdid artist title year/], + [qw/70 2 delete0 2005/], + [qw/71 3 delete1 2005/], + [qw/72 3 delete2 2005/], + [qw/73 3 delete3 2006/], + [qw/74 3 delete4 2007/], + [qw/75 9 delete5 2008/], +]); + +my $total_cds = $cdrs->count; + +# test that delete_related w/o conditions deletes all related records only +$ars->find (9)->delete_related ('cds'); +is ($cdrs->count, $total_cds -= 1, 'related delete ok'); + +my $a3_cds = $ars->find(3)->cds; + +# test that related deletion w/conditions deletes just the matched related records only +$a3_cds->search ({ year => 2005 })->delete; +is ($cdrs->count, $total_cds -= 2, 'related + condition delete ok'); + +# test that related deletion with limit condition works +$a3_cds->search ({}, { rows => 1})->delete; +is ($cdrs->count, $total_cds -= 1, 'related + limit delete ok');