added has_relationship_loaded skeleton method and some tests
[dbsrgits/DBIx-Class.git] / t / row / has_relationship_loaded.t
1 use strict;
2 use warnings;
3
4 use lib qw(t/lib);
5 use Test::More;
6 use Test::Exception;
7 use DBICTest;
8
9 my $schema = DBICTest->init_schema();
10 my $rs = $schema->resultset('CD');
11 my $row = $rs->first;
12
13 dies_ok { $row->has_relationship_loaded() }
14   'has_relationship_loaded needs a relationship name';
15
16 ok !$row->has_relationship_loaded($_), "vanilla row has no loaded relationship '$_'"
17   for $row->result_source->relationships;
18
19 # Prefetch of single relationship
20 {
21   my $prefetched = $rs->search_rs(undef, { prefetch => 'artist' })->first;
22   ok $prefetched->has_relationship_loaded('artist'), 'single prefetch detected by has_relationship_loaded';
23 }
24
25 # Prefetch of multiple relationships
26 {
27   my $prefetched = $rs->search_rs(undef, { prefetch => ['artist', 'tracks'] })->first;
28   ok $prefetched->has_relationship_loaded('artist'), 'first prefetch detected by has_relationship_loaded';
29   ok $prefetched->has_relationship_loaded('tracks'), 'second prefetch detected by has_relationship_loaded';
30 }
31
32 # Prefetch of nested relationships
33 {
34   my $prefetched = $rs->search_rs(undef, { prefetch => {'artist' => 'artwork_to_artist'} })->first;
35   ok $prefetched->has_relationship_loaded('artist'), 'direct prefetch detected by has_relationship_loaded';
36   ok $prefetched->artist->has_relationship_loaded('artwork_to_artist'), 'nested prefetch detected by has_relationship_loaded';
37 }
38
39 done_testing;