Add a clone method to ResultSource, switch obvious spots to it
[dbsrgits/DBIx-Class.git] / t / prefetch / empty_cache.t
1 BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7
8
9 use DBICTest;
10
11 my $schema = DBICTest->init_schema();
12
13 my $queries;
14 my $debugcb = sub { $queries++; };
15 my $orig_debug = $schema->storage->debug;
16
17 {
18   $queries = 0;
19   $schema->storage->debugcb($debugcb);
20   $schema->storage->debug(1);
21
22   my $cds_rs = $schema->resultset('CD')
23     ->search(\'0 = 1', { prefetch => 'tracks', cache => 1 });
24
25   my @cds = $cds_rs->all;
26   is( $queries, 1, '->all on empty original resultset hit db' );
27   is_deeply( $cds_rs->get_cache, [], 'empty cache on original resultset' );
28   is( 0+@cds, 0, 'empty original resultset' );
29
30   my $tracks_rs = $cds_rs->related_resultset('tracks');
31   is_deeply( $tracks_rs->get_cache, [], 'empty cache on related resultset' );
32
33   my @tracks = $tracks_rs->all;
34   is( $queries, 1, "->all on empty related resultset didn't hit db" );
35   is( 0+@tracks, 0, 'empty related resultset' );
36
37   $schema->storage->debugcb(undef);
38   $schema->storage->debug($orig_debug);
39 }
40
41 done_testing;