1use strict;
2use warnings;  
3
4use Test::More;
5use lib qw(t/lib);
6use DBICTest;
7use Test::More;
8
9plan tests => 15;
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' ];
18  my $result = $rs->_merge_attr($a, $b);
19  is_deeply( $result, $expected );
20}
21
22{
23  my $a = [ 'artist' ];
24  my $b = [ 'cd' ];
25  my $expected = [ 'artist', 'cd' ];
26  my $result = $rs->_merge_attr($a, $b);
27  is_deeply( $result, $expected );
28}
29
30{
31  my $a = [ 'artist', 'cd' ];
32  my $b = [ 'cd' ];
33  my $expected = [ 'artist', 'cd' ];
34  my $result = $rs->_merge_attr($a, $b);
35  is_deeply( $result, $expected );
36}
37
38{
39  my $a = [ 'artist', 'artist' ];
40  my $b = [ 'artist', 'cd' ];
41  my $expected = [ 'artist', 'artist', 'cd' ];
42  my $result = $rs->_merge_attr($a, $b);
43  is_deeply( $result, $expected );
44}
45
46{
47  my $a = [ 'artist', 'cd' ];
48  my $b = [ 'artist', 'artist' ];
49  my $expected = [ 'artist', 'cd', 'artist' ];
50  my $result = $rs->_merge_attr($a, $b);
51  is_deeply( $result, $expected );
52}
53
54{
55  my $a = [ 'twokeys' ];
56  my $b = [ 'cds', 'cds' ];
57  my $expected = [ 'twokeys', 'cds', 'cds' ];
58  my $result = $rs->_merge_attr($a, $b);
59  is_deeply( $result, $expected );
60}
61
62{
63  my $a = [ 'artist', 'cd', { 'artist' => 'manager' } ];
64  my $b = 'artist';
65  my $expected = [ 'artist', 'cd', { 'artist' => 'manager' } ];
66  my $result = $rs->_merge_attr($a, $b);
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' } ];
74  my $result = $rs->_merge_attr($a, $b);
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' ] } ];
82  my $result = $rs->_merge_attr($a, $b);
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' } ];
90  my $result = $rs->_merge_attr($a, $b);
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' } ] } ];
98  my $result = $rs->_merge_attr($a, $b);
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' ] } ] } ];
106  my $result = $rs->_merge_attr($a, $b);
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' } ];
114  my $result = $rs->_merge_attr($a, $b);
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' ];
122  my $result = $rs->_merge_attr($a, $b);
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' } ];
130  my $result = $rs->_merge_attr($a, $b);
131  is_deeply( $result, $expected );
132}
133
134
1351;
136