2942d23950eac048f70bae63fc9cc5ec0cc642c0
[dbsrgits/DBIx-Class.git] / t / prefetch / double_prefetch.t
1 BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
2
3 use warnings;
4 use strict;
5
6 use Test::More;
7
8 use DBICTest ':DiffSQL';
9
10 my $schema = DBICTest->init_schema();
11
12 # While this is a rather GIGO case, make sure it behaves as pre-103,
13 # as it may result in hard-to-track bugs
14 my $cds = $schema->resultset('Artist')
15             ->search_related ('cds')
16               ->search ({}, {
17                   prefetch => [ 'single_track', { single_track => 'cd' } ],
18                 });
19
20 is_same_sql(
21   ${$cds->as_query}->[0],
22   '(
23     SELECT
24       cds.cdid, cds.artist, cds.title, cds.year, cds.genreid, cds.single_track,
25       single_track.trackid, single_track.cd, single_track.position, single_track.title, single_track.last_updated_on, single_track.last_updated_at,
26       single_track_2.trackid, single_track_2.cd, single_track_2.position, single_track_2.title, single_track_2.last_updated_on, single_track_2.last_updated_at,
27       cd.cdid, cd.artist, cd.title, cd.year, cd.genreid, cd.single_track
28     FROM artist me
29       JOIN cd cds ON cds.artist = me.artistid
30       LEFT JOIN track single_track ON single_track.trackid = cds.single_track
31       LEFT JOIN track single_track_2 ON single_track_2.trackid = cds.single_track
32       LEFT JOIN cd cd ON cd.cdid = single_track_2.cd
33   )',
34 );
35
36 done_testing;