X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F104view.t;h=a13ea00e5fa0145ee8a763cfc19312290fc13de6;hb=906c03556a6c5584b3f2f18eb7501cc4c48704a1;hp=0539d48dc137e8fd927248320c8bd6c268549e07;hpb=1ee9aa728c714ad8e501297e86c1fb513687238c;p=dbsrgits%2FDBIx-Class.git diff --git a/t/104view.t b/t/104view.t index 0539d48..a13ea00 100644 --- a/t/104view.t +++ b/t/104view.t @@ -1,28 +1,70 @@ use strict; -use warnings; +use warnings; use Test::More; -use Test::Exception; use lib qw(t/lib); use DBICTest; my $schema = DBICTest->init_schema(); -plan tests => 2; - ## Real view -my $cds_rs = $schema->resultset('CD')->search( { year => 2000 }); +my $cds_rs_2000 = $schema->resultset('CD')->search( { year => 2000 }); my $year2kcds_rs = $schema->resultset('Year2000CDs'); -is($cds_rs->count, $year2kcds_rs->count, 'View Year2000CDs sees all CDs in year 2000'); +is($cds_rs_2000->count, $year2kcds_rs->count, 'View Year2000CDs sees all CDs in year 2000'); ## Virtual view -my $cds_rs = $schema->resultset('CD')->search( { year => 1999 }); +my $cds_rs_1999 = $schema->resultset('CD')->search( { year => 1999 }); my $year1999cds_rs = $schema->resultset('Year1999CDs'); -is($cds_rs->count, $year1999cds_rs->count, 'View Year1999CDs sees all CDs in year 1999'); +is($cds_rs_1999->count, $year1999cds_rs->count, 'View Year1999CDs sees all CDs in year 1999'); +# Test if relationships work correctly +is_deeply ( + [ + $schema->resultset('Year1999CDs')->search ( + {}, + { + result_class => 'DBIx::Class::ResultClass::HashRefInflator', + prefetch => ['artist', { tracks => [qw/cd year1999cd year2000cd/] } ], + }, + )->all + ], + [ + $schema->resultset('CD')->search ( + { 'me.year' => '1999'}, + { + result_class => 'DBIx::Class::ResultClass::HashRefInflator', + prefetch => ['artist', { tracks => [qw/cd year1999cd year2000cd/] } ], + columns => [qw/cdid single_track title/], # to match the columns retrieved by the virtview + }, + )->all + ], + 'Prefetch over virtual view gives expected result', +); +is_deeply ( + [ + $schema->resultset('Year2000CDs')->search ( + {}, + { + result_class => 'DBIx::Class::ResultClass::HashRefInflator', + prefetch => ['artist', { tracks => [qw/cd year1999cd year2000cd/] } ], + }, + )->all + ], + [ + $schema->resultset('CD')->search ( + { 'me.year' => '2000'}, + { + result_class => 'DBIx::Class::ResultClass::HashRefInflator', + prefetch => ['artist', { tracks => [qw/cd year1999cd year2000cd/] } ], + }, + )->all + ], + 'Prefetch over regular view gives expected result', +); +done_testing;