From: Peter Rabbitson Date: Mon, 12 May 2008 11:09:20 +0000 (+0000) Subject: Add failing tests for missing safeguards for multilevel prefetch (don't know the... X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5aac79f733809095bdc342947712586fbd85aa9a;p=dbsrgits%2FDBIx-Class-Historic.git Add failing tests for missing safeguards for multilevel prefetch (don't know the internals well enough to fix the issue itself) --- diff --git a/t/77prefetch.t b/t/77prefetch.t index b4ef5b9..a0ab5f2 100644 --- a/t/77prefetch.t +++ b/t/77prefetch.t @@ -16,7 +16,7 @@ BEGIN { eval "use DBD::SQLite"; plan $@ ? ( skip_all => 'needs DBD::SQLite for testing' ) - : ( tests => 56 ); + : ( tests => 58 ); } # figure out if we've got a version of sqlite that is older than 3.2.6, in @@ -344,7 +344,8 @@ is($art_rs_pr->search_related('cds')->search_related('tracks')->first->title, is($queries, 0, 'chained search_related after has_many->has_many prefetch ran no queries'); - +# once the following TODO is complete, remove the 2 stop-gap tests immediately after the TODO block +# (the TODO block itself contains tests ensuring that the stop-gaps are removed) TODO: { local $TODO = 'Prefetch of multiple has_many rels at the same level (currently must die to protect the clueless git)'; use DBIx::Class::ResultClass::HashRefInflator; @@ -409,3 +410,8 @@ TODO: { is_deeply ([$pr_tags_rs->all], [$tags_rs->all], 'same structure returned with and without prefetch over several same level has_many\'s (M -> 1 -> M + M)'); }; + +eval { my $track = $schema->resultset('CD')->search ({ 'me.title' => 'Forkful of bees' }, { prefetch => [qw/tracks tags/] })->first->tracks->first }; +ok ($@, 'exception on attempt to prefetch several same level has_many\'s (1 -> M + M)'); +eval { my $tag = $schema->resultset('LinerNotes')->search ({ notes => 'Buy Whiskey!' }, { prefetch => { cd => [qw/tags tracks/] } })->first->cd->tags->first }; +ok ($@, 'exception on attempt to prefetch several same level has_many\'s (M -> 1 -> M + M)');