X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F104view.t;h=4abe7e82a4519d7ab2dce69caf937d97408f4b3f;hb=9cc3585d8b82799078cb292d97a90a0d952089d9;hp=0539d48dc137e8fd927248320c8bd6c268549e07;hpb=1ee9aa728c714ad8e501297e86c1fb513687238c;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/104view.t b/t/104view.t index 0539d48..4abe7e8 100644 --- a/t/104view.t +++ b/t/104view.t @@ -1,28 +1,72 @@ 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/] } ], + order_by => 'tracks.trackid', + }, + )->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 + order_by => 'tracks.trackid', + }, + )->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;