X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fprefetch%2Fvia_search_related.t;h=588b125051776f12cf5f55a15e04ee3ca182976a;hb=a5f2ccb49689cf2603ea5614b231088cb520734f;hp=e95d9608ac29b5175f4a9d7f965e5e79f5087a44;hpb=90f10b5a4f971772f25d6304430124abfa4a890c;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/prefetch/via_search_related.t b/t/prefetch/via_search_related.t index e95d960..588b125 100644 --- a/t/prefetch/via_search_related.t +++ b/t/prefetch/via_search_related.t @@ -69,6 +69,47 @@ lives_ok ( sub { }, 'search_related prefetch with condition referencing unqualified column of a joined table works'); +# make sure chains off prefetched results still work +{ + my $cd = $schema->resultset('CD')->search({}, { prefetch => 'cd_to_producer' })->find(1); + + $queries = 0; + $schema->storage->debugcb ($debugcb); + $schema->storage->debug (1); + + is( $cd->cd_to_producer->count, 3 ,'Count of prefetched m2m links via accessor' ); + is( scalar $cd->cd_to_producer->all, 3, 'Amount of prefetched m2m link objects via accessor' ); + is( $cd->search_related('cd_to_producer')->count, 3, 'Count of prefetched m2m links via search_related' ); + is( scalar $cd->search_related('cd_to_producer')->all, 3, 'Amount of prefetched m2m links via search_related' ); + + is($queries, 0, 'No queries ran so far'); + + is( scalar $cd->cd_to_producer->search_related('producer')->all, 3, + 'Amount of objects via search_related off prefetched linker' ); + is( $cd->cd_to_producer->search_related('producer')->count, 3, + 'Count via search_related off prefetched linker' ); + is( scalar $cd->search_related('cd_to_producer')->search_related('producer')->all, 3, + 'Amount of objects via chained search_related off prefetched linker' ); + is( $cd->search_related('cd_to_producer')->search_related('producer')->count, 3, + 'Count via chained search_related off prefetched linker' ); + is( scalar $cd->producers->all, 3, + 'Amount of objects via m2m accessor' ); + is( $cd->producers->count, 3, + 'Count via m2m accessor' ); + + $queries = 0; + + is( $cd->cd_to_producer->count, 3 ,'Review count of prefetched m2m links via accessor' ); + is( scalar $cd->cd_to_producer->all, 3, 'Review amount of prefetched m2m link objects via accessor' ); + is( $cd->search_related('cd_to_producer')->count, 3, 'Review count of prefetched m2m links via search_related' ); + is( scalar $cd->search_related('cd_to_producer')->all, 3, 'Rreview amount of prefetched m2m links via search_related' ); + + is($queries, 0, 'Still no queries on prefetched linker'); + $schema->storage->debugcb (undef); + $schema->storage->debug ($orig_debug); +} + +# tests with distinct => 1 lives_ok (sub { my $rs = $schema->resultset("Artwork")->search(undef, {distinct => 1}) ->search_related('artwork_to_artist')->search_related('artist',