From: Peter Rabbitson Date: Fri, 15 May 2009 08:43:04 +0000 (+0000) Subject: Add failing multikey rs delete (and by implication update) test X-Git-Tag: v0.08103~64^2~10 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=9e6af55c1bb316ab006ca5f67b61cdfba18b2df4;p=dbsrgits%2FDBIx-Class.git Add failing multikey rs delete (and by implication update) test --- diff --git a/t/delete/related.t b/t/delete/related.t index f3fb78b..39aa429 100644 --- a/t/delete/related.t +++ b/t/delete/related.t @@ -4,7 +4,7 @@ use warnings; use lib qw(t/lib); use DBICTest; -plan tests => 3; +plan tests => 6; my $schema = DBICTest->init_schema(); @@ -43,3 +43,46 @@ is ($cdrs->count, $total_cds -= 2, 'related + condition delete ok'); # test that related deletion with limit condition works $a2_cds->search ({}, { rows => 1})->delete; is ($cdrs->count, $total_cds -= 1, 'related + limit delete ok'); + +my $tkfk = $schema->resultset('FourKeys_to_TwoKeys'); + +my ($fa, $fb) = $tkfk->related_resultset ('fourkeys')->populate ([ + [qw/foo bar hello goodbye sensors/], + [qw/1 1 1 1 a /], + [qw/2 2 2 2 b /], +]); + +# This is already provided by DBICTest +#my ($ta, $tb) = $tkfk->related_resultset ('twokeys')->populate ([ +# [qw/artist cd /], +# [qw/1 1 /], +# [qw/2 2 /], +#]); +my ($ta, $tb) = $schema->resultset ('TwoKeys') + ->search ( [ { artist => 1, cd => 1 }, { artist => 2, cd => 2 } ]) + ->all; + +my $tkfk_cnt = $tkfk->count; + +my $non_void_ctx = $tkfk->populate ([ + { autopilot => 'a', fourkeys => $fa, twokeys => $ta }, + { autopilot => 'b', fourkeys => $fb, twokeys => $tb }, + { autopilot => 'x', fourkeys => $fa, twokeys => $tb }, + { autopilot => 'y', fourkeys => $fb, twokeys => $ta }, +]); +is ($tkfk->count, $tkfk_cnt += 4, 'FourKeys_to_TwoKeys populated succesfully'); + +my $sub_rs = $tkfk->search ( + [ + { map { $_ => 1 } qw/artist.artistid cd.cdid fourkeys.foo fourkeys.bar fourkeys.hello fourkeys.goodbye/ }, + { map { $_ => 2 } qw/artist.artistid cd.cdid fourkeys.foo fourkeys.bar fourkeys.hello fourkeys.goodbye/ }, + ], + { + join => [ 'fourkeys', { twokeys => [qw/artist cd/] } ], + }, +); + +is ($sub_rs->count, 2, 'Only two rows from fourkeys match'); +$sub_rs->delete; + +is ($tkfk->count, $tkfk_cnt -= 2, 'Only two rows deleted');