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