Move around tests a bit
[dbsrgits/DBIx-Class.git] / t / prefetch / grouped.t
index 1cb670c..b1718bf 100644 (file)
@@ -1,13 +1,13 @@
 use strict;
 use warnings;
+
 use Test::More;
+use Test::Exception;
 
 use lib qw(t/lib);
 use DBICTest;
 use DBIC::SqlMakerTest;
 
-plan 'no_plan';
-
 my $schema = DBICTest->init_schema();
 my $sdebug = $schema->storage->debug;
 
@@ -232,3 +232,43 @@ for ($cd_rs->all) {
   is ($rs->all, 5, 'Correct number of CD objects');
   is ($rs->count, 5, 'Correct count of CDs');
 }
+
+lives_ok (sub {
+    my $rs = $schema->resultset("Artwork")->search(undef, {distinct => 1})
+              ->search_related('artwork_to_artist')->search_related('artist',
+                 undef,
+                  { prefetch => q(cds) },
+              );
+    is($rs->all, 0, 'prefetch without WHERE');
+
+    $rs = $schema->resultset("Artwork")->search(undef, {distinct => 1})
+              ->search_related('artwork_to_artist')->search_related('artist',
+                 { 'cds.title' => 'foo' },
+                  { prefetch => q(cds) },
+              );
+    is($rs->all, 0, 'prefetch with WHERE');
+
+
+    # different case
+    $rs = $schema->resultset("Artist")->search(undef)
+                ->search_related('cds')->search_related('genre',
+                    { 'genre.name' => 'foo' },
+                    { prefetch => q(cds) },
+                 );
+    is($rs->all, 0, 'prefetch without distinct');
+
+    $rs = $schema->resultset("Artist")->search(undef, {distinct => 1})
+                ->search_related('cds')->search_related('genre',
+                    { 'genre.name' => 'foo' },
+                 );
+    is($rs->all, 0, 'distinct without prefetch');
+
+    $rs = $schema->resultset("Artist")->search(undef, {distinct => 1})
+                ->search_related('cds')->search_related('genre',
+                    { 'genre.name' => 'foo' },
+                    { prefetch => q(cds) },
+                 );
+    is($rs->all, 0, 'prefetch with distinct');
+}, 'distinct generally works with prefetch');
+
+done_testing;