From: Rafael Kitover Date: Thu, 5 Jul 2012 17:03:44 +0000 (-0400) Subject: Test for restricted prefetch (now passing again after previous commit) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=574dd7c9e960fd2fa6ad083454776adf3cd967e9;p=dbsrgits%2FDBIx-Class-Historic.git Test for restricted prefetch (now passing again after previous commit) --- diff --git a/t/prefetch/double_prefetch.t b/t/prefetch/double_prefetch.t index 954e335..1e5ff10 100644 --- a/t/prefetch/double_prefetch.t +++ b/t/prefetch/double_prefetch.t @@ -8,8 +8,6 @@ use DBICTest; my $schema = DBICTest->init_schema(); -plan tests => 1; - # While this is a rather GIGO case, make sure it behaves as pre-103, # as it may result in hard-to-track bugs my $cds = $schema->resultset('Artist') @@ -33,3 +31,5 @@ is_same_sql( LEFT JOIN cd cd ON cd.cdid = single_track_2.cd )', ); + +done_testing; diff --git a/t/prefetch/restricted_children_set.t b/t/prefetch/restricted_children_set.t new file mode 100644 index 0000000..959c87d --- /dev/null +++ b/t/prefetch/restricted_children_set.t @@ -0,0 +1,108 @@ +use strict; +use warnings; + +use Test::More; +use lib qw(t/lib); +use DBICTest; + +my $schema = DBICTest->init_schema(); + +my $cds_rs = $schema->resultset('CD')->search( + [ + { + 'me.title' => "Caterwaulin' Blues", + 'cds.title' => { '!=' => 'Forkful of bees' } + }, + { + 'me.title' => { '!=', => "Caterwaulin' Blues" }, + 'cds.title' => 'Forkful of bees' + }, + ], + { + order_by => 'me.cdid', + prefetch => { artist => 'cds' }, + result_class => 'DBIx::Class::ResultClass::HashRefInflator', + }, +); + +is_deeply [ $cds_rs->all ], [ + { + 'single_track' => undef, + 'cdid' => '1', + 'artist' => { + 'cds' => [ + { + 'single_track' => undef, + 'artist' => '1', + 'cdid' => '2', + 'title' => 'Forkful of bees', + 'genreid' => undef, + 'year' => '2001' + }, + ], + 'artistid' => '1', + 'charfield' => undef, + 'name' => 'Caterwauler McCrae', + 'rank' => '13' + }, + 'title' => 'Spoonful of bees', + 'year' => '1999', + 'genreid' => '1' + }, + { + 'single_track' => undef, + 'cdid' => '2', + 'artist' => { + 'cds' => [ + { + 'single_track' => undef, + 'artist' => '1', + 'cdid' => '2', + 'title' => 'Forkful of bees', + 'genreid' => undef, + 'year' => '2001' + }, + ], + 'artistid' => '1', + 'charfield' => undef, + 'name' => 'Caterwauler McCrae', + 'rank' => '13' + }, + 'title' => 'Forkful of bees', + 'year' => '2001', + 'genreid' => undef + }, + { + 'single_track' => undef, + 'cdid' => '3', + 'artist' => { + 'cds' => [ + { + 'single_track' => undef, + 'artist' => '1', + 'cdid' => '3', + 'title' => 'Caterwaulin\' Blues', + 'genreid' => undef, + 'year' => '1997' + }, + { + 'single_track' => undef, + 'artist' => '1', + 'cdid' => '1', + 'title' => 'Spoonful of bees', + 'genreid' => '1', + 'year' => '1999' + } + ], + 'artistid' => '1', + 'charfield' => undef, + 'name' => 'Caterwauler McCrae', + 'rank' => '13' + }, + 'title' => 'Caterwaulin\' Blues', + 'year' => '1997', + 'genreid' => undef + } +], 'multi-level prefetch with restrictions ok'; + +done_testing;