X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F76joins.t;h=a401927e60ae4c50c10f9f98e00ab4a1f2b8c596;hb=3f6cc7e47e1084bdee20a01d1e05edc0dda4bc0c;hp=2f473a91117a3f22fef7420d9b2b2f609872df5a;hpb=d54c409fd93e11d0d1714a17d75fc699a13a2418;p=dbsrgits%2FDBIx-Class.git diff --git a/t/76joins.t b/t/76joins.t index 2f473a9..a401927 100644 --- a/t/76joins.t +++ b/t/76joins.t @@ -16,7 +16,7 @@ BEGIN { eval "use DBD::SQLite"; plan $@ ? ( skip_all => 'needs DBD::SQLite for testing' ) - : ( tests => 62 ); + : ( tests => 63 ); } # figure out if we've got a version of sqlite that is older than 3.2.6, in @@ -169,7 +169,7 @@ is(Dumper($attr), $attr_str, 'Attribute hash untouched after search()'); cmp_ok($rs + 0, '==', 3, 'Correct number of records returned'); my $queries = 0; -$schema->storage->debugcb(sub { $queries++ }); +$schema->storage->debugcb(sub { $queries++; }); $schema->storage->debug(1); my @cd = $rs->all; @@ -226,11 +226,7 @@ is($tag->search_related('cd')->search_related('artist')->first->name, 'Caterwauler McCrae', 'chained belongs_to->belongs_to search_related ok'); -TODO: { - local $TODO = 'use prefetched values for nested search_related'; - - is($queries, 0, 'chained search_related after belontgs_to->belongs_to prefetch ran no queries'); -} +is($queries, 0, 'chained search_related after belontgs_to->belongs_to prefetch ran no queries'); $queries = 0; @@ -242,6 +238,8 @@ is($queries, 1, 'find with prefetch ran exactly 1 select statement (excluding co $queries = 0; +$schema->storage->debugcb(sub { $queries++; }); + $cd = $schema->resultset('CD')->find(1, { prefetch => { cd_to_producer => 'producer' } }); is($cd->producers->first->name, 'Matt S Trout', 'many_to_many accessor ok'); @@ -258,11 +256,7 @@ my $producers = $cd->search_related('cd_to_producer')->search_related('producer' is($producers->first->name, 'Matt S Trout', 'chained many_to_many search_related ok'); -TODO: { - local $TODO = 'use prefetched values for search_related'; - - is($queries, 0, 'chained search_related after many_to_many prefetch ran no queries'); -} +is($queries, 0, 'chained search_related after many_to_many prefetch ran no queries'); $schema->storage->debug($orig_debug); $schema->storage->debugobj->callback(undef); @@ -342,6 +336,19 @@ SKIP: { is($rs->next->name, 'Caterwauler McCrae', "Correct artist returned"); +$cd = $schema->resultset('Artist')->first->create_related('cds', + { + title => 'Unproduced Single', + year => 2007 +}); + +my $left_join = $schema->resultset('CD')->search( + { 'me.cdid' => $cd->cdid }, + { prefetch => { cd_to_producer => 'producer' } } +); + +cmp_ok($left_join, '==', 1, 'prefetch with no join record present'); + $queries = 0; $schema->storage->debugcb(sub { $queries++ }); $schema->storage->debug(1); @@ -416,7 +423,8 @@ my $art_rs_pr = $art_rs->search( {}, { join => [ { cds => ['tracks'] } ], - prefetch => [ { cds => ['tracks'] } ] + prefetch => [ { cds => ['tracks'] } ], + cache => 1 # last test needs this } ); @@ -461,8 +469,4 @@ is($art_rs_pr->search_related('cds')->search_related('tracks')->first->title, 'chained has_many->has_many search_related ok' ); -TODO: { - local $TODO ='use prefetched values for chained search_related'; - - is($queries, 0, 'chained search_related after has_many->has_many prefetch ran no queries'); -} +is($queries, 0, 'chained search_related after has_many->has_many prefetch ran no queries');