X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fcount%2Fprefetch.t;h=eb18236d804cdad7655aa7a1a8c2aad251270daa;hb=a5a7bb733a940db710b7408508374833683a2e79;hp=a0b6d75e48cf8f1a8886b0772c2546aaabb13a97;hpb=972015a720dac187c82c75642c733299b897b40d;p=dbsrgits%2FDBIx-Class.git diff --git a/t/count/prefetch.t b/t/count/prefetch.t index a0b6d75..eb18236 100644 --- a/t/count/prefetch.t +++ b/t/count/prefetch.t @@ -4,8 +4,7 @@ use warnings; use lib qw(t/lib); use Test::More; -use DBICTest; -use DBIC::SqlMakerTest; +use DBICTest ':DiffSQL'; my $schema = DBICTest->init_schema(); @@ -31,9 +30,9 @@ my $schema = DBICTest->init_schema(); JOIN artist artist ON artist.artistid = cds.artist WHERE tracks.position = ? OR tracks.position = ? GROUP BY cds.cdid - ) count_subq + ) cds )', - [ map { [ 'tracks.position' => $_ ] } (1, 2) ], + [ map { [ { sqlt_datatype => 'int', dbic_colname => 'tracks.position' } => $_ ] } (1, 2) ], ); } @@ -53,15 +52,21 @@ my $schema = DBICTest->init_schema(); SELECT COUNT( * ) FROM ( SELECT genre.genreid - FROM artist me + FROM ( + SELECT me.artistid, me.name, me.rank, me.charfield + FROM artist me + GROUP BY me.artistid, me.name, me.rank, me.charfield + ) me JOIN cd cds ON cds.artist = me.artistid JOIN genre genre ON genre.genreid = cds.genreid - LEFT JOIN cd cds_2 ON cds_2.genreid = genre.genreid WHERE ( genre.name = ? ) GROUP BY genre.genreid - ) count_subq + ) + genre )', - [ [ 'genre.name' => 'emo' ] ], + [ [ { sqlt_datatype => 'varchar', sqlt_size => 100, dbic_colname => 'genre.name' } + => 'emo' ] + ], ); } @@ -69,7 +74,7 @@ my $schema = DBICTest->init_schema(); { my $rs = $schema->resultset("CD") ->search_related('tracks', - { position => [1,2] }, + { position => [1,2], 'lyrics.lyric_id' => undef }, { prefetch => [qw/disc lyrics/] }, ); is ($rs->all, 10, 'Correct number of objects'); @@ -85,9 +90,9 @@ my $schema = DBICTest->init_schema(); JOIN track tracks ON tracks.cd = me.cdid JOIN cd disc ON disc.cdid = tracks.cd LEFT JOIN lyrics lyrics ON lyrics.track_id = tracks.trackid - WHERE position = ? OR position = ? + WHERE lyrics.lyric_id IS NULL AND (position = ? OR position = ?) )', - [ map { [ position => $_ ] } (1, 2) ], + [ map { [ { sqlt_datatype => 'int', dbic_colname => 'position' } => $_ ] } (1, 2) ], ); }