Fix regression breaking search on prefetched rel (broken by 5e2a0518)
[dbsrgits/DBIx-Class.git] / t / prefetch / refined_search_on_relation.t
diff --git a/t/prefetch/refined_search_on_relation.t b/t/prefetch/refined_search_on_relation.t
new file mode 100644 (file)
index 0000000..8a7035c
--- /dev/null
@@ -0,0 +1,56 @@
+use strict;
+use warnings;
+
+use Test::More;
+use lib qw(t/lib);
+use DBICTest;
+
+my $schema = DBICTest->init_schema();
+
+my $art = $schema->resultset('Artist')->find(
+  { 'me.artistid' => 1 },
+  { prefetch => 'cds', order_by => { -desc => 'cds.year' } }
+);
+
+is (
+  $art->cds->search({ year => 1999 })->next->year,
+  1999,
+  'Found expected CD with year 1999 after refined search',
+);
+
+is (
+  $art->cds->count({ year => 1999 }),
+  1,
+  'Correct refined count',
+);
+
+# this still should emit no queries:
+{
+  my $queries = 0;
+  my $orig_debug = $schema->storage->debug;
+  $schema->storage->debugcb(sub { $queries++; });
+  $schema->storage->debug(1);
+
+  my $cds = $art->cds;
+  is (
+    $cds->count,
+    3,
+    'Correct prefetched count',
+  );
+
+  my @years = qw(2001 1999 1997);
+  while (my $cd = $cds->next) {
+    is (
+      $cd->year,
+      (shift @years),
+      'Correct prefetched cd year',
+    );
+  }
+
+  $schema->storage->debug($orig_debug);
+  $schema->storage->debugcb(undef);
+
+  is ($queries, 0, 'No queries on prefetched operations');
+}
+
+done_testing;