Commit | Line | Data |
1d78a406 |
1 | use strict; |
8273e845 |
2 | use warnings; |
1d78a406 |
3 | |
4 | use Test::More; |
5 | use lib qw(t/lib); |
6 | use DBICTest; |
7 | use Test::More; |
1d78a406 |
8 | |
1d78a406 |
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' ]; |
37aafa2e |
16 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
17 | is_deeply( $result, $expected ); |
18 | } |
19 | |
20 | { |
21 | my $a = [ 'artist' ]; |
22 | my $b = [ 'cd' ]; |
23 | my $expected = [ 'artist', 'cd' ]; |
37aafa2e |
24 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
25 | is_deeply( $result, $expected ); |
26 | } |
27 | |
28 | { |
29 | my $a = [ 'artist', 'cd' ]; |
30 | my $b = [ 'cd' ]; |
31 | my $expected = [ 'artist', 'cd' ]; |
37aafa2e |
32 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
33 | is_deeply( $result, $expected ); |
34 | } |
35 | |
36 | { |
37 | my $a = [ 'artist', 'artist' ]; |
38 | my $b = [ 'artist', 'cd' ]; |
39 | my $expected = [ 'artist', 'artist', 'cd' ]; |
37aafa2e |
40 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
41 | is_deeply( $result, $expected ); |
42 | } |
43 | |
44 | { |
45 | my $a = [ 'artist', 'cd' ]; |
46 | my $b = [ 'artist', 'artist' ]; |
47 | my $expected = [ 'artist', 'cd', 'artist' ]; |
37aafa2e |
48 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
49 | is_deeply( $result, $expected ); |
50 | } |
51 | |
52 | { |
aab9e887 |
53 | my $a = [ 'twokeys' ]; |
54 | my $b = [ 'cds', 'cds' ]; |
55 | my $expected = [ 'twokeys', 'cds', 'cds' ]; |
37aafa2e |
56 | my $result = $rs->_merge_joinpref_attr($a, $b); |
aab9e887 |
57 | is_deeply( $result, $expected ); |
58 | } |
59 | |
60 | { |
1d78a406 |
61 | my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ]; |
62 | my $b = 'artist'; |
63 | my $expected = [ 'artist', 'cd', { 'artist' => 'manager' } ]; |
37aafa2e |
64 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
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' } ]; |
37aafa2e |
72 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
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' ] } ]; |
37aafa2e |
80 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
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' } ]; |
37aafa2e |
88 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
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' } ] } ]; |
37aafa2e |
96 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
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' ] } ] } ]; |
37aafa2e |
104 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
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' } ]; |
37aafa2e |
112 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
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' ]; |
37aafa2e |
120 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
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' } ]; |
37aafa2e |
128 | my $result = $rs->_merge_joinpref_attr($a, $b); |
1d78a406 |
129 | is_deeply( $result, $expected ); |
130 | } |
131 | |
a8e561e3 |
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 | } |
1d78a406 |
147 | |
a8e561e3 |
148 | done_testing; |