Test for restricted prefetch (now passing again after previous commit)
Rafael Kitover [Thu, 5 Jul 2012 17:03:44 +0000 (13:03 -0400)]
t/prefetch/double_prefetch.t
t/prefetch/restricted_children_set.t [new file with mode: 0644]

index 954e335..1e5ff10 100644 (file)
@@ -8,8 +8,6 @@ use DBICTest;
 
 my $schema = DBICTest->init_schema();
 
-plan tests => 1;
-
 # While this is a rather GIGO case, make sure it behaves as pre-103,
 # as it may result in hard-to-track bugs
 my $cds = $schema->resultset('Artist')
@@ -33,3 +31,5 @@ is_same_sql(
       LEFT JOIN cd cd ON cd.cdid = single_track_2.cd
   )',
 );
+
+done_testing;
diff --git a/t/prefetch/restricted_children_set.t b/t/prefetch/restricted_children_set.t
new file mode 100644 (file)
index 0000000..959c87d
--- /dev/null
@@ -0,0 +1,108 @@
+use strict;
+use warnings;
+
+use Test::More;
+use lib qw(t/lib);
+use DBICTest;
+
+my $schema = DBICTest->init_schema();
+
+my $cds_rs = $schema->resultset('CD')->search(
+  [
+    {
+      'me.title' => "Caterwaulin' Blues",
+      'cds.title' => { '!=' => 'Forkful of bees' }
+    },
+    {
+      'me.title' => { '!=', => "Caterwaulin' Blues" },
+      'cds.title' => 'Forkful of bees'
+    },
+  ],
+  {
+    order_by => 'me.cdid',
+    prefetch => { artist => 'cds' },
+    result_class => 'DBIx::Class::ResultClass::HashRefInflator',
+  },
+);
+
+is_deeply [ $cds_rs->all ], [
+  {
+    'single_track' => undef,
+    'cdid' => '1',
+    'artist' => {
+      'cds' => [
+        {
+          'single_track' => undef,
+          'artist' => '1',
+          'cdid' => '2',
+          'title' => 'Forkful of bees',
+          'genreid' => undef,
+          'year' => '2001'
+        },
+      ],
+      'artistid' => '1',
+      'charfield' => undef,
+      'name' => 'Caterwauler McCrae',
+      'rank' => '13'
+    },
+    'title' => 'Spoonful of bees',
+    'year' => '1999',
+    'genreid' => '1'
+  },
+  {
+    'single_track' => undef,
+    'cdid' => '2',
+    'artist' => {
+      'cds' => [
+        {
+          'single_track' => undef,
+          'artist' => '1',
+          'cdid' => '2',
+          'title' => 'Forkful of bees',
+          'genreid' => undef,
+          'year' => '2001'
+        },
+      ],
+      'artistid' => '1',
+      'charfield' => undef,
+      'name' => 'Caterwauler McCrae',
+      'rank' => '13'
+    },
+    'title' => 'Forkful of bees',
+    'year' => '2001',
+    'genreid' => undef
+  },
+  {
+    'single_track' => undef,
+    'cdid' => '3',
+    'artist' => {
+      'cds' => [
+        {
+          'single_track' => undef,
+          'artist' => '1',
+          'cdid' => '3',
+          'title' => 'Caterwaulin\' Blues',
+          'genreid' => undef,
+          'year' => '1997'
+        },
+        {
+          'single_track' => undef,
+          'artist' => '1',
+          'cdid' => '1',
+          'title' => 'Spoonful of bees',
+          'genreid' => '1',
+          'year' => '1999'
+        }
+      ],
+      'artistid' => '1',
+      'charfield' => undef,
+      'name' => 'Caterwauler McCrae',
+      'rank' => '13'
+    },
+    'title' => 'Caterwaulin\' Blues',
+    'year' => '1997',
+    'genreid' => undef
+  }
+], 'multi-level prefetch with restrictions ok';
+
+done_testing;