1use strict; 2use warnings; 3 4use Test::More; 5use Test::Exception; 6use lib qw(t/lib); 7use DBICTest; 8 9my $schema = DBICTest->init_schema(); 10 11## Real view 12my $cds_rs_2000 = $schema->resultset('CD')->search( { year => 2000 }); 13my $year2kcds_rs = $schema->resultset('Year2000CDs'); 14 15is($cds_rs_2000->count, $year2kcds_rs->count, 'View Year2000CDs sees all CDs in year 2000'); 16 17 18## Virtual view 19my $cds_rs_1999 = $schema->resultset('CD')->search( { year => 1999 }); 20my $year1999cds_rs = $schema->resultset('Year1999CDs'); 21 22is($cds_rs_1999->count, $year1999cds_rs->count, 'View Year1999CDs sees all CDs in year 1999'); 23 24 25# Test if relationships work correctly 26is_deeply ( 27 [ 28 $schema->resultset('Year1999CDs')->search ( 29 {}, 30 { 31 result_class => 'DBIx::Class::ResultClass::HashRefInflator', 32 prefetch => ['artist', { tracks => [qw/cd year1999cd year2000cd/] } ], 33 }, 34 )->all 35 ], 36 [ 37 $schema->resultset('CD')->search ( 38 { 'me.year' => '1999'}, 39 { 40 result_class => 'DBIx::Class::ResultClass::HashRefInflator', 41 prefetch => ['artist', { tracks => [qw/cd year1999cd year2000cd/] } ], 42 columns => [qw/cdid single_track title/], # to match the columns retrieved by the virtview 43 }, 44 )->all 45 ], 46 'Prefetch over virtual view gives expected result', 47); 48 49is_deeply ( 50 [ 51 $schema->resultset('Year2000CDs')->search ( 52 {}, 53 { 54 result_class => 'DBIx::Class::ResultClass::HashRefInflator', 55 prefetch => ['artist', { tracks => [qw/cd year1999cd year2000cd/] } ], 56 }, 57 )->all 58 ], 59 [ 60 $schema->resultset('CD')->search ( 61 { 'me.year' => '2000'}, 62 { 63 result_class => 'DBIx::Class::ResultClass::HashRefInflator', 64 prefetch => ['artist', { tracks => [qw/cd year1999cd year2000cd/] } ], 65 }, 66 )->all 67 ], 68 'Prefetch over regular view gives expected result', 69); 70 71done_testing; 72