From: Peter Rabbitson Date: Tue, 4 Aug 2009 20:50:51 +0000 (+0000) Subject: Split the search_related prefetch tests into a standalone testfile X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5fc1d686739da5507c27b946ce0460608589ba9d;p=dbsrgits%2FDBIx-Class-Historic.git Split the search_related prefetch tests into a standalone testfile --- diff --git a/t/prefetch/grouped.t b/t/prefetch/grouped.t index af9b1f0..9a85589 100644 --- a/t/prefetch/grouped.t +++ b/t/prefetch/grouped.t @@ -233,42 +233,4 @@ for ($cd_rs->all) { is ($rs->count, 5, 'Correct count of CDs'); } -lives_ok (sub { - my $rs = $schema->resultset("Artwork")->search(undef, {distinct => 1}) - ->search_related('artwork_to_artist')->search_related('artist', - undef, - { prefetch => q(cds) }, - ); - is($rs->all, 0, 'prefetch without WHERE'); - - $rs = $schema->resultset("Artwork")->search(undef, {distinct => 1}) - ->search_related('artwork_to_artist')->search_related('artist', - { 'cds.title' => 'foo' }, - { prefetch => q(cds) }, - ); - is($rs->all, 0, 'prefetch with WHERE'); - - - # different case - $rs = $schema->resultset("Artist")->search(undef) - ->search_related('cds')->search_related('genre', - { 'genre.name' => 'foo' }, - { prefetch => q(cds) }, - ); - is($rs->all, 0, 'prefetch without distinct'); - - $rs = $schema->resultset("Artist")->search(undef, {distinct => 1}) - ->search_related('cds')->search_related('genre', - { 'genre.name' => 'foo' }, - ); - is($rs->all, 0, 'distinct without prefetch'); - - $rs = $schema->resultset("Artist")->search({artistid => '11'}, {distinct => 1}) - ->search_related('cds')->search_related('genre', - { 'genre.name' => 'foo' }, - { prefetch => q(cds) }, - ); - is($rs->all, 0, 'prefetch with distinct'); -}, 'distinct generally works with prefetch'); - done_testing; diff --git a/t/prefetch/via_search_related.t b/t/prefetch/via_search_related.t new file mode 100644 index 0000000..54ee532 --- /dev/null +++ b/t/prefetch/via_search_related.t @@ -0,0 +1,64 @@ +use strict; +use warnings; + +use Test::More; +use Test::Exception; + +use lib qw(t/lib); +use DBICTest; + +my $schema = DBICTest->init_schema(); + +lives_ok (sub { + my $rs = $schema->resultset("Artwork")->search(undef, {distinct => 1}) + ->search_related('artwork_to_artist')->search_related('artist', + undef, + { prefetch => 'cds' }, + ); + is($rs->all, 0, 'prefetch without WHERE (objects)'); + is($rs->count, 0, 'prefetch without WHERE (count)'); + + $rs = $schema->resultset("Artwork")->search(undef, {distinct => 1}) + ->search_related('artwork_to_artist')->search_related('artist', + { 'cds.title' => 'foo' }, + { prefetch => 'cds' }, + ); + is($rs->all, 0, 'prefetch with WHERE (objects)'); + is($rs->count, 0, 'prefetch with WHERE (count)'); + + +# test where conditions at the root of the related chain + my $artist_rs = $schema->resultset("Artist")->search({artistid => 11}); + + + $rs = $artist_rs->search_related('cds')->search_related('genre', + { 'genre.name' => 'foo' }, + { prefetch => 'cds' }, + ); + is($rs->all, 0, 'prefetch without distinct (objects)'); + is($rs->count, 0, 'prefetch without distinct (count)'); + + + + $rs = $artist_rs->search(undef, {distinct => 1}) + ->search_related('cds')->search_related('genre', + { 'genre.name' => 'foo' }, + ); + is($rs->all, 0, 'distinct without prefetch (objects)'); + is($rs->count, 0, 'distinct without prefetch (count)'); + + + + $rs = $artist_rs->search({}, {distinct => 1}) + ->search_related('cds')->search_related('genre', + { 'genre.name' => 'foo' }, + { prefetch => 'cds' }, + ); + is($rs->all, 0, 'distinct with prefetch (objects)'); + is($rs->count, 0, 'distinct with prefetch (count)'); + + + +}, 'distinct generally works with prefetch'); + +done_testing;