X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fprefetch%2Fcount.t;h=f973575f18a146af7613c85d0b0935405c4aab5d;hb=c19ca6e801814466346f4b0f3793303561438312;hp=ef2f88bb4ea6a72adbfa1eb2043586a7a63f0937;hpb=0e773352a9c6c034dfb2526b8d68bf6ac1e2323b;p=dbsrgits%2FDBIx-Class.git diff --git a/t/prefetch/count.t b/t/prefetch/count.t index ef2f88b..f973575 100644 --- a/t/prefetch/count.t +++ b/t/prefetch/count.t @@ -3,10 +3,7 @@ use warnings; use Test::More; use lib qw(t/lib); -use DBICTest; -use DBIC::SqlMakerTest; - -plan tests => 23; +use DBICTest ':DiffSQL'; my $schema = DBICTest->init_schema(); @@ -15,7 +12,6 @@ my $cd_rs = $schema->resultset('CD')->search ( { prefetch => ['tracks', 'artist'] }, ); - is($cd_rs->count, 5, 'CDs with tracks count'); is($cd_rs->search_related('tracks')->count, 15, 'Tracks associated with CDs count (before SELECT()ing)'); @@ -77,26 +73,23 @@ is_same_sql_bind ( => 4 ] ], ); - -TODO: { +{ local $TODO = "Chaining with prefetch is fundamentally broken"; + $schema->is_executed_querycount( sub { - my $queries; - $schema->storage->debugcb ( sub { $queries++ } ); - $schema->storage->debug (1); - - my $cds = $cd2->search_related ('artist', {}, { prefetch => { cds => 'tracks' }, join => 'twokeys' }) + my $cds = $cd2->search_related ('artist', {}, { prefetch => { cds => 'tracks' }, join => 'twokeys' }) ->search_related ('cds'); - my $tracks = $cds->search_related ('tracks'); - - is($tracks->count, 2, "2 Tracks counted on cd via artist via one of the cds"); - is(scalar($tracks->all), 2, "2 Tracks prefetched on cd via artist via one of the cds"); - is($tracks->count, 2, "Cached 2 Tracks counted on cd via artist via one of the cds"); + my $tracks = $cds->search_related ('tracks'); - is($cds->count, 2, "2 CDs counted on artist via one of the cds"); - is(scalar($cds->all), 2, "2 CDs prefetched on artist via one of the cds"); - is($cds->count, 2, "Cached 2 CDs counted on artist via one of the cds"); + is($tracks->count, 2, "2 Tracks counted on cd via artist via one of the cds"); + is(scalar($tracks->all), 2, "2 Tracks prefetched on cd via artist via one of the cds"); + is($tracks->count, 2, "Cached 2 Tracks counted on cd via artist via one of the cds"); - is ($queries, 3, '2 counts + 1 prefetch?'); + is($cds->count, 2, "2 CDs counted on artist via one of the cds"); + is(scalar($cds->all), 2, "2 CDs prefetched on artist via one of the cds"); + is($cds->count, 2, "Cached 2 CDs counted on artist via one of the cds"); + }, 3, '2 counts + 1 prefetch?' ); } + +done_testing;