--- /dev/null
+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;