From: Peter Rabbitson Date: Thu, 14 May 2009 11:19:59 +0000 (+0000) Subject: Questionable test changes - need a review X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a48831c9598d7603c1990e759e89a933783d1d60;p=dbsrgits%2FDBIx-Class-Historic.git Questionable test changes - need a review --- diff --git a/t/60core.t b/t/60core.t index de290de..c2f0c89 100644 --- a/t/60core.t +++ b/t/60core.t @@ -234,8 +234,13 @@ my $search = [ { 'tags.tag' => 'Cheesy' }, { 'tags.tag' => 'Blue' } ]; my( $or_rs ) = $schema->resultset("CD")->search_rs($search, { join => 'tags', order_by => 'cdid' }); - -is($or_rs->count, 5, 'Search with OR ok'); +# At this point in the test there are: +# 1 artist with the cheesy AND blue tag +# 1 artist with the cheesy tag +# 2 artists with the blue tag +# +# Formerly this test expected 5 as there was no collapsing of the AND condition +is($or_rs->count, 4, 'Search with OR ok'); my $distinct_rs = $schema->resultset("CD")->search($search, { join => 'tags', distinct => 1 }); is($distinct_rs->all, 4, 'DISTINCT search with OR ok'); @@ -276,7 +281,13 @@ my $tag_rs = $schema->resultset('Tag')->search( my $rel_rs = $tag_rs->search_related('cd'); -is($rel_rs->count, 5, 'Related search ok'); +# At this point in the test there are: +# 1 artist with the cheesy AND blue tag +# 1 artist with the cheesy tag +# 2 artists with the blue tag +# +# Formerly this test expected 5 as there was no collapsing of the AND condition +is($rel_rs->count, 4, 'Related search ok'); is($or_rs->next->cdid, $rel_rs->next->cdid, 'Related object ok'); $or_rs->reset; diff --git a/t/90join_torture.t b/t/90join_torture.t index a277475..494237f 100644 --- a/t/90join_torture.t +++ b/t/90join_torture.t @@ -45,10 +45,24 @@ my @cds = $artists2[0]->cds; cmp_ok(scalar @cds, '==', 1, "condition based on inherited join okay"); my $rs3 = $rs2->search_related('cds'); -cmp_ok(scalar($rs3->all), '==', 45, "All cds for artist returned"); +# $rs3 selects * from cds_2, with the following join map +# +# artist -> cds_2 +# | +# V +# cds -> cd_to_producer -> producer +# | +# |\--> tags +# V +# tracks +# +# For some reason it is expected to return an exploded set of rows instead of the +# logical 3, even for a rowobject retrieval - why? +# +cmp_ok(scalar($rs3->all), '==', 45, "All cds for artist returned"); -cmp_ok($rs3->count, '==', 45, "All cds for artist returned via count"); +cmp_ok($rs3->count, '==', 3, "All cds for artist returned via count"); my $rs4 = $schema->resultset("CD")->search({ 'artist.artistid' => '1' }, { join => ['tracks', 'artist'], prefetch => 'artist' }); my @rs4_results = $rs4->all;