More fail (fix is known but needs work)
[dbsrgits/DBIx-Class.git] / t / prefetch / count.t
CommitLineData
5eb45f82 1use strict;
2use warnings;
3
4use Test::More;
5use lib qw(t/lib);
6use DBICTest;
7
610e8c98 8plan tests => 11;
5eb45f82 9
10my $schema = DBICTest->init_schema();
11
12my $cd_rs = $schema->resultset('CD')->search (
13 { 'tracks.cd' => { '!=', undef } },
14 { prefetch => ['tracks', 'artist'] },
15);
16
17
18is($cd_rs->count, 5, 'CDs with tracks count');
19is($cd_rs->search_related('tracks')->count, 15, 'Tracks associated with CDs count (before SELECT()ing)');
20
21is($cd_rs->all, 5, 'Amount of CD objects with tracks');
22is($cd_rs->search_related('tracks')->count, 15, 'Tracks associated with CDs count (after SELECT()ing)');
23
24is($cd_rs->search_related ('tracks')->all, 15, 'Track objects associated with CDs (after SELECT()ing)');
1ec6e7c2 25
610e8c98 26my $artist = $schema->resultset('Artist')->create({name => 'xxx'});
27
28my $artist_rs = $schema->resultset('Artist')->search(
29 {artistid => $artist->id},
30 {prefetch=>'cds', join => 'twokeys' }
31);
32
a7daf36a 33is($artist_rs->count, 1, "New artist found with prefetch turned on");
34is(scalar($artist_rs->all), 1, "New artist fetched with prefetch turned on");
35is($artist_rs->related_resultset('cds')->count, 0, "No CDs counted on a brand new artist");
36is(scalar($artist_rs->related_resultset('cds')->all), 0, "No CDs fetched on a brand new artist (count == fetch)");
1ec6e7c2 37
610e8c98 38# create a cd, and make sure the non-existing join does not skew the count
39$artist->create_related ('cds', { title => 'yyy', year => '1999' });
40is($artist_rs->related_resultset('cds')->count, 1, "1 CDs counted on a brand new artist");
41is(scalar($artist_rs->related_resultset('cds')->all), 1, "1 CDs prefetched on a brand new artist (count == fetch)");
42