Line 0
Link Here
|
|
|
1 |
#!/usr/bin/perl |
2 |
|
3 |
# This file is part of Koha. |
4 |
# |
5 |
# Copyright 2014 - Biblibre SARL |
6 |
# |
7 |
# Koha is free software; you can redistribute it and/or modify it |
8 |
# under the terms of the GNU General Public License as published by |
9 |
# the Free Software Foundation; either version 3 of the License, or |
10 |
# (at your option) any later version. |
11 |
# |
12 |
# Koha is distributed in the hope that it will be useful, but |
13 |
# WITHOUT ANY WARRANTY; without even the implied warranty of |
14 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 |
# GNU General Public License for more details. |
16 |
# |
17 |
# You should have received a copy of the GNU General Public License |
18 |
# along with Koha; if not, see <http://www.gnu.org/licenses>. |
19 |
|
20 |
use Modern::Perl; |
21 |
use Test::More tests => 40; |
22 |
|
23 |
BEGIN { |
24 |
use_ok('t::lib::TestBuilder'); |
25 |
} |
26 |
|
27 |
|
28 |
my $builder = t::lib::TestBuilder->new(); |
29 |
|
30 |
is( $builder->build(), undef, 'build without arguments returns undef' ); |
31 |
|
32 |
my @sources = $builder->schema->sources; |
33 |
my $nb_failure = 0; |
34 |
for my $source (@sources) { |
35 |
eval { $builder->build( { source => $source } ); }; |
36 |
$nb_failure++ if ($@); |
37 |
} |
38 |
is( $nb_failure, 0, 'TestBuilder can create a entry for every sources' ); |
39 |
|
40 |
my $my_overduerules_transport_type = { |
41 |
message_transport_type => { |
42 |
message_transport_type => 'my msg_t_t', |
43 |
}, |
44 |
letternumber => 1, |
45 |
branchcode => { |
46 |
branchcode => 'codeB', |
47 |
categorycode => 'codeC', |
48 |
}, |
49 |
categorycode => undef, |
50 |
}; |
51 |
$my_overduerules_transport_type->{categorycode} = $my_overduerules_transport_type->{branchcode}; |
52 |
my $overduerules_transport_type = $builder->build({ |
53 |
source => 'OverduerulesTransportType', |
54 |
value => $my_overduerules_transport_type, |
55 |
}); |
56 |
is( |
57 |
$overduerules_transport_type->{message_transport_type}, |
58 |
$my_overduerules_transport_type->{message_transport_type}->{message_transport_type}, |
59 |
'build stores the message_transport_type correctly' |
60 |
); |
61 |
is( |
62 |
$overduerules_transport_type->{letternumber}, |
63 |
$my_overduerules_transport_type->{letternumber}, |
64 |
'build stores the letternumber correctly' |
65 |
); |
66 |
is( |
67 |
$overduerules_transport_type->{branchcode}, |
68 |
$my_overduerules_transport_type->{branchcode}->{branchcode}, |
69 |
'build stores the branchcode correctly' |
70 |
); |
71 |
is( |
72 |
$overduerules_transport_type->{categorycode}, |
73 |
$my_overduerules_transport_type->{categorycode}->{categorycode}, |
74 |
'build stores the categorycode correctly' |
75 |
); |
76 |
is( |
77 |
$overduerules_transport_type->{_fk}->{message_transport_type}->{message_transport_type}, |
78 |
$my_overduerules_transport_type->{message_transport_type}->{message_transport_type}, |
79 |
'build stores the foreign key message_transport_type correctly' |
80 |
); |
81 |
is( |
82 |
$overduerules_transport_type->{_fk}->{branchcode}->{branchcode}, |
83 |
$my_overduerules_transport_type->{branchcode}->{branchcode}, |
84 |
'build stores the foreign key branchcode correctly' |
85 |
); |
86 |
is( |
87 |
$overduerules_transport_type->{_fk}->{categorycode}->{categorycode}, |
88 |
$my_overduerules_transport_type->{categorycode}->{categorycode}, |
89 |
'build stores the foreign key categorycode correctly' |
90 |
); |
91 |
is_deeply( |
92 |
$overduerules_transport_type->{_fk}->{branchcode}, |
93 |
$overduerules_transport_type->{_fk}->{categorycode}, |
94 |
'build links the branchcode and the categorycode correctly' |
95 |
); |
96 |
isnt( |
97 |
$overduerules_transport_type->{_fk}->{branchcode}->{letter2}, |
98 |
undef, |
99 |
'build generates values if they are not given' |
100 |
); |
101 |
|
102 |
my $my_user_permission = $t::lib::TestBuilder::default_value->{UserPermission}; |
103 |
my $user_permission = $builder->build({ |
104 |
source => 'UserPermission', |
105 |
}); |
106 |
isnt( |
107 |
$user_permission->{borrowernumber}, |
108 |
undef, |
109 |
'build generates a borrowernumber correctly' |
110 |
); |
111 |
is( |
112 |
$user_permission->{module_bit}, |
113 |
$my_user_permission->{module_bit}->{module_bit}->{bit}, |
114 |
'build stores the default value correctly' |
115 |
); |
116 |
is( |
117 |
$user_permission->{code}, |
118 |
$my_user_permission->{module_bit}->{code}, |
119 |
'build stores the default value correctly' |
120 |
); |
121 |
is( |
122 |
$user_permission->{borrowernumber}, |
123 |
$user_permission->{_fk}->{borrowernumber}->{borrowernumber}, |
124 |
'build links the foreign key correctly' |
125 |
); |
126 |
is( |
127 |
$user_permission->{_fk}->{borrowernumber}->{surname}, |
128 |
$my_user_permission->{borrowernumber}->{surname}, |
129 |
'build stores the foreign key value correctly' |
130 |
); |
131 |
is( |
132 |
$user_permission->{_fk}->{borrowernumber}->{address}, |
133 |
$my_user_permission->{borrowernumber}->{address}, |
134 |
'build stores the foreign key value correctly' |
135 |
); |
136 |
is( |
137 |
$user_permission->{_fk}->{borrowernumber}->{city}, |
138 |
$my_user_permission->{borrowernumber}->{city}, |
139 |
'build stores the foreign key value correctly' |
140 |
); |
141 |
is( |
142 |
$user_permission->{_fk}->{borrowernumber}->{_fk}->{branchcode}->{branchcode}, |
143 |
$my_user_permission->{borrowernumber}->{branchcode}->{branchcode}, |
144 |
'build stores the foreign key value correctly' |
145 |
); |
146 |
is( |
147 |
$user_permission->{_fk}->{borrowernumber}->{_fk}->{branchcode}->{branchname}, |
148 |
$my_user_permission->{borrowernumber}->{branchcode}->{branchname}, |
149 |
'build stores the foreign key value correctly' |
150 |
); |
151 |
is( |
152 |
$user_permission->{_fk}->{borrowernumber}->{_fk}->{categorycode}->{categorycode}, |
153 |
$my_user_permission->{borrowernumber}->{categorycode}->{categorycode}, |
154 |
'build stores the foreign key value correctly' |
155 |
); |
156 |
is( |
157 |
$user_permission->{_fk}->{borrowernumber}->{_fk}->{categorycode}->{hidelostitems}, |
158 |
$my_user_permission->{borrowernumber}->{categorycode}->{hidelostitems}, |
159 |
'build stores the foreign key value correctly' |
160 |
); |
161 |
is( |
162 |
$user_permission->{_fk}->{borrowernumber}->{_fk}->{categorycode}->{category_type}, |
163 |
$my_user_permission->{borrowernumber}->{categorycode}->{category_type}, |
164 |
'build stores the foreign key value correctly' |
165 |
); |
166 |
is( |
167 |
$user_permission->{_fk}->{borrowernumber}->{_fk}->{categorycode}->{defaultprivacy}, |
168 |
$my_user_permission->{borrowernumber}->{categorycode}->{defaultprivacy}, |
169 |
'build stores the foreign key value correctly' |
170 |
); |
171 |
is( |
172 |
$user_permission->{_fk}->{borrowernumber}->{privacy}, |
173 |
$my_user_permission->{borrowernumber}->{privacy}, |
174 |
'build stores the foreign key value correctly' |
175 |
); |
176 |
is( |
177 |
$user_permission->{_fk}->{module_bit}->{_fk}->{module_bit}->{bit}, |
178 |
$my_user_permission->{module_bit}->{module_bit}->{bit}, |
179 |
'build stores the foreign key value correctly' |
180 |
); |
181 |
is( |
182 |
$user_permission->{_fk}->{module_bit}->{code}, |
183 |
$my_user_permission->{module_bit}->{code}, |
184 |
'build stores the foreign key value correctly' |
185 |
); |
186 |
is_deeply( |
187 |
$user_permission->{_fk}->{module_bit}, |
188 |
$user_permission->{_fk}->{code}, |
189 |
'build links the codes correctly' |
190 |
); |
191 |
isnt( |
192 |
$user_permission->{_fk}->{borrowernumber}->{cardnumber}, |
193 |
undef, |
194 |
'build generates values if they are not given' |
195 |
); |
196 |
isnt( |
197 |
$user_permission->{_fk}->{borrowernumber}->{_fk}->{branchcode}->{branchaddress1}, |
198 |
undef, |
199 |
'build generates values if they are not given' |
200 |
); |
201 |
isnt( |
202 |
$user_permission->{_fk}->{borrowernumber}->{_fk}->{categorycode}->{description}, |
203 |
undef, |
204 |
'build generates values if they are not given' |
205 |
); |
206 |
isnt( |
207 |
$user_permission->{_fk}->{module_bit}->{description}, |
208 |
undef, |
209 |
'build generates values if they are not given' |
210 |
); |
211 |
isnt( |
212 |
$user_permission->{_fk}->{module_bit}->{_fk}->{module_bit}->{flag}, |
213 |
undef, |
214 |
'build generates values if they are not given' |
215 |
); |
216 |
|
217 |
|
218 |
my $nb_basket = $builder->schema->resultset('Aqbasket')->search(); |
219 |
isnt( $nb_basket, 0, 'add stores the generated entries correctly' ); |
220 |
$builder->clear( { source => 'Aqbasket' } ); |
221 |
$nb_basket = $builder->schema->resultset('Aqbasket')->search(); |
222 |
is( $nb_basket, 0, 'clear removes all the entries correctly' ); |
223 |
|
224 |
|
225 |
my $rs_aqbookseller = $builder->schema->resultset('Aqbookseller'); |
226 |
my $bookseller = $builder->build({ |
227 |
source => 'Aqbookseller', |
228 |
only_fk => 1, |
229 |
}); |
230 |
delete $bookseller->{_fk}; |
231 |
my $bookseller_from_db = $rs_aqbookseller->find($bookseller); |
232 |
is( $bookseller_from_db, undef, 'build with only_fk = 1 does not store the entry' ); |
233 |
my $bookseller_result = $rs_aqbookseller->create($bookseller); |
234 |
is( $bookseller_result->in_storage, 1, 'build with only_fk = 1 creates the foreign keys correctly' ); |
235 |
|
236 |
$bookseller = $builder->build({ |
237 |
source => 'Aqbookseller', |
238 |
}); |
239 |
delete $bookseller->{_fk}; |
240 |
$bookseller_from_db = $rs_aqbookseller->find($bookseller); |
241 |
is( $bookseller_from_db->in_storage, 1, 'build without the parameter only_sk stores the entry correctly' ); |
242 |
|
243 |
$bookseller = $builder->build({ |
244 |
source => 'Aqbookseller', |
245 |
only_fk => 0, |
246 |
}); |
247 |
delete $bookseller->{_fk}; |
248 |
$bookseller_from_db = $rs_aqbookseller->find($bookseller); |
249 |
is( $bookseller_from_db->in_storage, 1, 'build with only_fk = 0 stores the entry correctly' ); |