Fix uninitialized warnings on empty hashes passed to join/prefetch
[dbsrgits/DBIx-Class.git] / xt / extra / internals / merge_joinpref_attr.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use lib qw(t/lib);
6 use DBICTest;
7 use Test::More;
8
9 my $schema = DBICTest->init_schema();
10 my $rs = $schema->resultset( 'CD' );
11
12 {
13   my $a = 'artist';
14   my $b = 'cd';
15   my $expected = [ 'artist', 'cd' ];
16   my $result = $rs->_merge_joinpref_attr($a, $b);
17   is_deeply( $result, $expected );
18 }
19
20 {
21   my $a = [ 'artist' ];
22   my $b = [ 'cd' ];
23   my $expected = [ 'artist', 'cd' ];
24   my $result = $rs->_merge_joinpref_attr($a, $b);
25   is_deeply( $result, $expected );
26 }
27
28 {
29   my $a = [ 'artist', 'cd' ];
30   my $b = [ 'cd' ];
31   my $expected = [ 'artist', 'cd' ];
32   my $result = $rs->_merge_joinpref_attr($a, $b);
33   is_deeply( $result, $expected );
34 }
35
36 {
37   my $a = [ 'artist', 'artist' ];
38   my $b = [ 'artist', 'cd' ];
39   my $expected = [ 'artist', 'artist', 'cd' ];
40   my $result = $rs->_merge_joinpref_attr($a, $b);
41   is_deeply( $result, $expected );
42 }
43
44 {
45   my $a = [ 'artist', 'cd' ];
46   my $b = [ 'artist', 'artist' ];
47   my $expected = [ 'artist', 'cd', 'artist' ];
48   my $result = $rs->_merge_joinpref_attr($a, $b);
49   is_deeply( $result, $expected );
50 }
51
52 {
53   my $a = [ 'twokeys' ];
54   my $b = [ 'cds', 'cds' ];
55   my $expected = [ 'twokeys', 'cds', 'cds' ];
56   my $result = $rs->_merge_joinpref_attr($a, $b);
57   is_deeply( $result, $expected );
58 }
59
60 {
61   my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ];
62   my $b = 'artist';
63   my $expected = [ 'artist', 'cd', { 'artist' => 'manager' } ];
64   my $result = $rs->_merge_joinpref_attr($a, $b);
65   is_deeply( $result, $expected );
66 }
67
68 {
69   my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ];
70   my $b = [ 'artist', 'cd' ];
71   my $expected = [ 'artist', 'cd', { 'artist' => 'manager' } ];
72   my $result = $rs->_merge_joinpref_attr($a, $b);
73   is_deeply( $result, $expected );
74 }
75
76 {
77   my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ];
78   my $b = { 'artist' => 'manager' };
79   my $expected = [ 'artist', 'cd', { 'artist' => [ 'manager' ] } ];
80   my $result = $rs->_merge_joinpref_attr($a, $b);
81   is_deeply( $result, $expected );
82 }
83
84 {
85   my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ];
86   my $b = { 'artist' => 'agent' };
87   my $expected = [ { 'artist' => 'agent' }, 'cd', { 'artist' => 'manager' } ];
88   my $result = $rs->_merge_joinpref_attr($a, $b);
89   is_deeply( $result, $expected );
90 }
91
92 {
93   my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ];
94   my $b = { 'artist' => { 'manager' => 'artist' } };
95   my $expected = [ 'artist', 'cd', { 'artist' => [ { 'manager' => 'artist' } ] } ];
96   my $result = $rs->_merge_joinpref_attr($a, $b);
97   is_deeply( $result, $expected );
98 }
99
100 {
101   my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ];
102   my $b = { 'artist' => { 'manager' => [ 'artist', 'label' ] } };
103   my $expected = [ 'artist', 'cd', { 'artist' => [ { 'manager' => [ 'artist', 'label' ] } ] } ];
104   my $result = $rs->_merge_joinpref_attr($a, $b);
105   is_deeply( $result, $expected );
106 }
107
108 {
109   my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ];
110   my $b = { 'artist' => { 'tour_manager' => [ 'venue', 'roadie' ] } };
111   my $expected = [ { 'artist' => { 'tour_manager' => [ 'venue', 'roadie' ] } }, 'cd', { 'artist' =>  'manager' } ];
112   my $result = $rs->_merge_joinpref_attr($a, $b);
113   is_deeply( $result, $expected );
114 }
115
116 {
117   my $a = [ 'artist', 'cd' ];
118   my $b = { 'artist' => { 'tour_manager' => [ 'venue', 'roadie' ] } };
119   my $expected = [ { 'artist' => { 'tour_manager' => [ 'venue', 'roadie' ] } }, 'cd' ];
120   my $result = $rs->_merge_joinpref_attr($a, $b);
121   is_deeply( $result, $expected );
122 }
123
124 {
125   my $a = [ { 'artist' => 'manager' }, 'cd' ];
126   my $b = [ 'artist', { 'artist' => 'manager' } ];
127   my $expected = [ { 'artist' => 'manager' }, 'cd', { 'artist' => 'manager' } ];
128   my $result = $rs->_merge_joinpref_attr($a, $b);
129   is_deeply( $result, $expected );
130 }
131
132 {
133   my $a = [ { 'artist' => { 'manager' => {} } }, 'cd' ];
134   my $b = [ 'artist', { 'artist' => { 'manager' => {} } } ];
135   my $expected = [ { 'artist' => { 'manager' => {} } }, 'cd', { 'artist' => { 'manager' => {} } } ];
136   my $result = $rs->_merge_joinpref_attr($a, $b);
137   is_deeply( $result, $expected );
138 }
139
140 {
141   my $a = [ { 'artist' => { 'manager' => undef } }, 'cd' ];
142   my $b = [ 'artist', { 'artist' => { 'manager' => undef } } ];
143   my $expected = [ { 'artist' => { 'manager' => undef } }, 'cd', { 'artist' => { 'manager' => undef } } ];
144   my $result = $rs->_merge_joinpref_attr($a, $b);
145   is_deeply( $result, $expected );
146 }
147
148 done_testing;