my $schema = DBICTest->init_schema();
my $orig_debug = $schema->storage->debug;
-plan tests => 44;
-
my $queries = 0;
$schema->storage->debugcb(sub { $queries++; });
$schema->storage->debug(1);
$schema->storage->debug(1);
$rs = $schema->resultset('Tag')->search(
- {},
+ { 'me.tagid' => 1 },
{
prefetch => { cd => 'artist' }
}
$schema->storage->debugcb(sub { $queries++; });
-$cd = $schema->resultset('CD')->find(1, { prefetch => { cd_to_producer => 'producer' } });
+$cd = $schema->resultset('CD')->find(1, { prefetch => { cd_to_producer => 'producer' }, order_by => 'producer.producerid' });
is($cd->producers->first->name, 'Matt S Trout', 'many_to_many accessor ok');
@artists = $rs->search(undef, { prefetch => 'cds', order_by => 'artistid' });
is(scalar @artists, 5, 'has_many prefetch with adjacent empty rows ok');
+lives_ok { @artists = $rs->search(undef, {
+ join => ['cds'],
+ prefetch => [],
+ rows => 20,
+ });
+} 'join and empty prefetch ok';
+
# -------------
#
# Tests for multilevel has_many prefetch
my $rs = shift;
my $struc = {};
+ # all of these ought to work, but do not for some reason
+ # a noop cloning search() pollution?
+ #foreach my $art ( $rs->search({}, { order_by => 'me.artistid' })->all ) {
+ #foreach my $art ( $rs->search({}, {})->all ) {
+ #foreach my $art ( $rs->search()->all ) {
foreach my $art ( $rs->all ) {
foreach my $cd ( $art->cds ) {
foreach my $track ( $cd->tracks ) {
$queries = 0;
-is($art_rs_pr->search_related('cds')->search_related('tracks')->first->title,
- 'Fowlin',
- 'chained has_many->has_many search_related ok'
- );
+is_deeply(
+ [ sort map { $_->title } $art_rs_pr->search_related('cds')->search_related('tracks')->all ],
+ [ 'Apiary', 'Beehind You', 'Boring Name', 'Boring Song', 'Fowlin', 'Howlin',
+ 'No More Ideas', 'Sad', 'Sticky Honey', 'Stripy', 'Stung with Success',
+ 'Suicidal', 'The Bees Knees', 'Under The Weather', 'Yowlin' ],
+ 'chained has_many->has_many search_related ok'
+);
is($queries, 0, 'chained search_related after has_many->has_many prefetch ran no queries');
$schema->storage->debug($orig_debug);
$schema->storage->debugobj->callback(undef);
+
+done_testing;