Lines 19-25
$dbh->{AutoCommit} = 0;
Link Here
|
19 |
teardown(); |
19 |
teardown(); |
20 |
|
20 |
|
21 |
subtest 'CRUD' => sub { |
21 |
subtest 'CRUD' => sub { |
22 |
plan tests => 13; |
22 |
plan tests => 12; |
23 |
my $patron = $builder->build({ |
23 |
my $patron = $builder->build({ |
24 |
source => 'Borrower', |
24 |
source => 'Borrower', |
25 |
}); |
25 |
}); |
Lines 39-47
subtest 'CRUD' => sub {
Link Here
|
39 |
|
39 |
|
40 |
$number_of_shelves = Koha::Virtualshelves->search->count; |
40 |
$number_of_shelves = Koha::Virtualshelves->search->count; |
41 |
is( $number_of_shelves, 1, '1 shelf should have been inserted' ); |
41 |
is( $number_of_shelves, 1, '1 shelf should have been inserted' ); |
42 |
is( $shelf->allow_add, 0, 'The default value for allow_add should be 1' ); |
42 |
is( $shelf->allow_change_from_owner, 1, 'The default value for allow_change_from_owner should be 1' ); |
43 |
is( $shelf->allow_delete_own, 1, 'The default value for allow_delete_own should be 0' ); |
43 |
is( $shelf->allow_change_from_others, 0, 'The default value for allow_change_from_others should be 0' ); |
44 |
is( $shelf->allow_delete_other, 0, 'The default value for allow_delete_other should be 0' ); |
|
|
45 |
is( output_pref($shelf->created_on), output_pref(dt_from_string), 'The creation time should have been set to today' ); |
44 |
is( output_pref($shelf->created_on), output_pref(dt_from_string), 'The creation time should have been set to today' ); |
46 |
|
45 |
|
47 |
my $retrieved_shelf = Koha::Virtualshelves->find( $shelf->shelfnumber ); |
46 |
my $retrieved_shelf = Koha::Virtualshelves->find( $shelf->shelfnumber ); |
Lines 194-243
subtest 'Shelf content' => sub {
Link Here
|
194 |
my $contents = $shelf->get_contents; |
193 |
my $contents = $shelf->get_contents; |
195 |
is( $contents->count, 2, 'There are 2 biblios on this shelf' ); |
194 |
is( $contents->count, 2, 'There are 2 biblios on this shelf' ); |
196 |
|
195 |
|
197 |
# Patron 2 will try to remove a content |
196 |
# Patron 2 will try to remove biblios |
198 |
# allow_add = 0, allow_delete_own = 1, allow_delete_other = 0 => Default values |
197 |
# allow_change_from_owner = 1, allow_change_from_others = 0 (defaults) |
199 |
my $number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio1->{biblionumber} ], borrowernumber => $patron2->{borrowernumber} } ); |
198 |
my $number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio1->{biblionumber} ], borrowernumber => $patron2->{borrowernumber} } ); |
200 |
is( $number_of_deleted_biblios, 0, 'Patron 2 removed nothing' ); |
199 |
is( $number_of_deleted_biblios, 0, 'Patron 2 removed nothing' ); |
201 |
# Now try with patron 1 |
200 |
# Now try with patron 1 |
202 |
$number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio1->{biblionumber} ], borrowernumber => $patron1->{borrowernumber} } ); |
201 |
$number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio1->{biblionumber} ], borrowernumber => $patron1->{borrowernumber} } ); |
203 |
is( $number_of_deleted_biblios, 1, 'Patron 1 removed biblio' ); |
202 |
is( $number_of_deleted_biblios, 1, 'Patron 1 removed biblio' ); |
204 |
|
|
|
205 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
203 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
206 |
is( $number_of_contents, 1, 'To be sure the content has been deleted' ); |
204 |
is( $number_of_contents, 1, 'To be sure the content has been deleted' ); |
207 |
|
205 |
|
208 |
# allow_delete_own = 0 |
206 |
# allow_change_from_owner == 0 (readonly) |
209 |
$shelf->allow_delete_own(0); |
207 |
$shelf->allow_change_from_owner( 0 ); |
210 |
$shelf->store; |
208 |
$shelf->store; |
211 |
$number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio2->{biblionumber} ], borrowernumber => $patron1->{borrowernumber} } ); |
209 |
$number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio2->{biblionumber} ], borrowernumber => $patron1->{borrowernumber} } ); |
212 |
is( $number_of_deleted_biblios, 1, 'Patron 1 removed another biblio' ); |
210 |
is( $number_of_deleted_biblios, 0, 'Owner could not delete' ); |
213 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
211 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
214 |
is( $number_of_contents, 0, 'The biblio should have been deleted to the shelf by the patron, it is his own content (allow_delete_own=0)' ); |
212 |
is( $number_of_contents, 1, 'Number of entries still equal to 1' ); |
215 |
$shelf->add_biblio( $biblio2->{biblionumber}, $patron1->{borrowernumber} ); |
213 |
$shelf->add_biblio( $biblio2->{biblionumber}, $patron1->{borrowernumber} ); |
|
|
214 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
215 |
is( $number_of_contents, 1, 'Biblio not added to the list' ); |
216 |
# Add back biblio1 |
217 |
$shelf->allow_change_from_owner( 1 ); |
218 |
$shelf->add_biblio( $biblio1->{biblionumber}, $patron1->{borrowernumber} ); |
219 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
220 |
is( $number_of_contents, 2, 'Biblio added to the list' ); |
216 |
|
221 |
|
217 |
# allow_add = 1, allow_delete_own = 1 |
222 |
# allow_change_from_others == 1 |
218 |
$shelf->allow_add(1); |
223 |
$shelf->allow_change_from_others( 1 ); |
219 |
$shelf->allow_delete_own(1); |
|
|
220 |
$shelf->store; |
221 |
|
222 |
my $content3 = $shelf->add_biblio( $biblio3->{biblionumber}, $patron2->{borrowernumber} ); |
224 |
my $content3 = $shelf->add_biblio( $biblio3->{biblionumber}, $patron2->{borrowernumber} ); |
223 |
my $content4 = $shelf->add_biblio( $biblio4->{biblionumber}, $patron2->{borrowernumber} ); |
225 |
my $content4 = $shelf->add_biblio( $biblio4->{biblionumber}, $patron2->{borrowernumber} ); |
224 |
|
|
|
225 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
226 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
226 |
is( $number_of_contents, 3, 'The biblio should have been added to the shelf by the patron 2' ); |
227 |
is( $number_of_contents, 4, 'The biblio should have been added to the shelf by the patron 2' ); |
227 |
|
|
|
228 |
$number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio3->{biblionumber} ], borrowernumber => $patron2->{borrowernumber} } ); |
228 |
$number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio3->{biblionumber} ], borrowernumber => $patron2->{borrowernumber} } ); |
229 |
is( $number_of_deleted_biblios, 1, 'Biblio 3 deleted by patron 2' ); |
229 |
is( $number_of_deleted_biblios, 1, 'Biblio 3 deleted by patron 2' ); |
230 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
230 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
231 |
is( $number_of_contents, 2, 'The biblio should have been deleted to the shelf by the patron, it is his own content (allow_delete_own=1) ' ); |
231 |
is( $number_of_contents, 3, 'Back to three entries' ); |
232 |
|
|
|
233 |
# allow_add = 1, allow_delete_own = 1, allow_delete_other = 1 |
234 |
$shelf->allow_delete_other(1); |
235 |
$shelf->store; |
236 |
|
237 |
$number_of_deleted_biblios = $shelf->remove_biblios( { biblionumbers => [ $biblio2->{biblionumber} ], borrowernumber => $patron2->{borrowernumber} } ); |
238 |
is( $number_of_deleted_biblios, 1, 'Biblio 2 deleted by patron 2' ); |
239 |
$number_of_contents = Koha::Virtualshelfcontents->search->count; |
240 |
is( $number_of_contents, 1, 'The biblio should have been deleted to the shelf by the patron 2, even if it is not his own content (allow_delete_other=1)' ); |
241 |
|
232 |
|
242 |
teardown(); |
233 |
teardown(); |
243 |
}; |
234 |
}; |
Lines 257-265
subtest 'Shelf permissions' => sub {
Link Here
|
257 |
{ shelfname => "my first shelf", |
248 |
{ shelfname => "my first shelf", |
258 |
owner => $patron1->{borrowernumber}, |
249 |
owner => $patron1->{borrowernumber}, |
259 |
category => 2, |
250 |
category => 2, |
260 |
allow_add => 0, |
251 |
allow_change_from_owner => 0, |
261 |
allow_delete_own => 0, |
252 |
allow_change_from_others => 0, |
262 |
allow_delete_other => 0, |
|
|
263 |
} |
253 |
} |
264 |
)->store; |
254 |
)->store; |
265 |
|
255 |
|
Lines 272-287
subtest 'Shelf permissions' => sub {
Link Here
|
272 |
is( $public_shelf->can_be_managed( $patron1->{borrowernumber} ), 1, 'The owner should be able to manage his list' ); |
262 |
is( $public_shelf->can_be_managed( $patron1->{borrowernumber} ), 1, 'The owner should be able to manage his list' ); |
273 |
is( $public_shelf->can_be_managed( $patron2->{borrowernumber} ), 0, 'Public list should not be managed by someone else' ); |
263 |
is( $public_shelf->can_be_managed( $patron2->{borrowernumber} ), 0, 'Public list should not be managed by someone else' ); |
274 |
|
264 |
|
275 |
is( $public_shelf->can_biblios_be_added( $patron1->{borrowernumber} ), 1, 'The owner should be able to add biblios to his list' ); |
265 |
is( $public_shelf->can_biblios_be_added( $patron1->{borrowernumber} ), 0, 'The owner should not be able to add biblios to his list' ); |
276 |
is( $public_shelf->can_biblios_be_added( $patron2->{borrowernumber} ), 0, 'Public list should not be modified (add) by someone else' ); |
266 |
is( $public_shelf->can_biblios_be_added( $patron2->{borrowernumber} ), 0, 'Public list should not be modified (add) by someone else' ); |
277 |
|
267 |
|
278 |
is( $public_shelf->can_biblios_be_removed( $patron1->{borrowernumber} ), 1, 'The owner should be able to remove biblios to his list' ); |
268 |
is( $public_shelf->can_biblios_be_removed( $patron1->{borrowernumber} ), 0, 'The owner should not be able to remove biblios to his list' ); |
279 |
is( $public_shelf->can_biblios_be_removed( $patron2->{borrowernumber} ), 0, 'Public list should not be modified (remove) by someone else' ); |
269 |
is( $public_shelf->can_biblios_be_removed( $patron2->{borrowernumber} ), 0, 'Public list should not be modified (remove) by someone else' ); |
280 |
|
270 |
|
281 |
|
271 |
|
282 |
$public_shelf->allow_add(1); |
272 |
$public_shelf->allow_change_from_owner(1); |
283 |
$public_shelf->allow_delete_own(1); |
|
|
284 |
$public_shelf->allow_delete_other(1); |
285 |
$public_shelf->store; |
273 |
$public_shelf->store; |
286 |
|
274 |
|
287 |
is( $public_shelf->can_be_viewed( $patron1->{borrowernumber} ), 1, 'The owner should be able to view his public list' ); |
275 |
is( $public_shelf->can_be_viewed( $patron1->{borrowernumber} ), 1, 'The owner should be able to view his public list' ); |
Lines 294-312
subtest 'Shelf permissions' => sub {
Link Here
|
294 |
is( $public_shelf->can_be_managed( $patron2->{borrowernumber} ), 0, 'Public list should not be managed by someone else' ); |
282 |
is( $public_shelf->can_be_managed( $patron2->{borrowernumber} ), 0, 'Public list should not be managed by someone else' ); |
295 |
|
283 |
|
296 |
is( $public_shelf->can_biblios_be_added( $patron1->{borrowernumber} ), 1, 'The owner should be able to add biblios to his list' ); |
284 |
is( $public_shelf->can_biblios_be_added( $patron1->{borrowernumber} ), 1, 'The owner should be able to add biblios to his list' ); |
297 |
is( $public_shelf->can_biblios_be_added( $patron2->{borrowernumber} ), 1, 'Public list should not be modified (add) by someone else' ); |
285 |
is( $public_shelf->can_biblios_be_added( $patron2->{borrowernumber} ), 0, 'Public list should not be modified (add) by someone else' ); |
298 |
|
286 |
|
299 |
is( $public_shelf->can_biblios_be_removed( $patron1->{borrowernumber} ), 1, 'The owner should be able to remove biblios to his list' ); |
287 |
is( $public_shelf->can_biblios_be_removed( $patron1->{borrowernumber} ), 1, 'The owner should be able to remove biblios to his list' ); |
300 |
is( $public_shelf->can_biblios_be_removed( $patron2->{borrowernumber} ), 1, 'Public list should not be modified (remove) by someone else' ); |
288 |
is( $public_shelf->can_biblios_be_removed( $patron2->{borrowernumber} ), 0, 'Public list should not be modified (remove) by someone else' ); |
301 |
|
289 |
|
302 |
|
290 |
|
303 |
my $private_shelf = Koha::Virtualshelf->new( |
291 |
my $private_shelf = Koha::Virtualshelf->new( |
304 |
{ shelfname => "my first shelf", |
292 |
{ shelfname => "my first shelf", |
305 |
owner => $patron1->{borrowernumber}, |
293 |
owner => $patron1->{borrowernumber}, |
306 |
category => 1, |
294 |
category => 1, |
307 |
allow_add => 0, |
295 |
allow_change_from_owner => 0, |
308 |
allow_delete_own => 0, |
296 |
allow_change_from_others => 0, |
309 |
allow_delete_other => 0, |
|
|
310 |
} |
297 |
} |
311 |
)->store; |
298 |
)->store; |
312 |
|
299 |
|
Lines 319-334
subtest 'Shelf permissions' => sub {
Link Here
|
319 |
is( $private_shelf->can_be_managed( $patron1->{borrowernumber} ), 1, 'The owner should be able to manage his list' ); |
306 |
is( $private_shelf->can_be_managed( $patron1->{borrowernumber} ), 1, 'The owner should be able to manage his list' ); |
320 |
is( $private_shelf->can_be_managed( $patron2->{borrowernumber} ), 0, 'Private list should not be managed by someone else' ); |
307 |
is( $private_shelf->can_be_managed( $patron2->{borrowernumber} ), 0, 'Private list should not be managed by someone else' ); |
321 |
|
308 |
|
322 |
is( $private_shelf->can_biblios_be_added( $patron1->{borrowernumber} ), 1, 'The owner should be able to add biblios to his list' ); |
309 |
is( $private_shelf->can_biblios_be_added( $patron1->{borrowernumber} ), 0, 'The owner should not be able to add biblios to his list' ); |
323 |
is( $private_shelf->can_biblios_be_added( $patron2->{borrowernumber} ), 0, 'Private list should not be modified (add) by someone else' ); |
310 |
is( $private_shelf->can_biblios_be_added( $patron2->{borrowernumber} ), 0, 'Private list should not be modified (add) by someone else' ); |
324 |
|
311 |
|
325 |
is( $private_shelf->can_biblios_be_removed( $patron1->{borrowernumber} ), 1, 'The owner should be able to remove biblios to his list' ); |
312 |
is( $private_shelf->can_biblios_be_removed( $patron1->{borrowernumber} ), 0, 'The owner should not be able to remove biblios to his list' ); |
326 |
is( $private_shelf->can_biblios_be_removed( $patron2->{borrowernumber} ), 0, 'Private list should not be modified (remove) by someone else' ); |
313 |
is( $private_shelf->can_biblios_be_removed( $patron2->{borrowernumber} ), 0, 'Private list should not be modified (remove) by someone else' ); |
327 |
|
314 |
|
328 |
|
315 |
|
329 |
$private_shelf->allow_add(1); |
316 |
$private_shelf->allow_change_from_owner(1); |
330 |
$private_shelf->allow_delete_own(1); |
317 |
$private_shelf->allow_change_from_others(1); |
331 |
$private_shelf->allow_delete_other(1); |
|
|
332 |
$private_shelf->store; |
318 |
$private_shelf->store; |
333 |
|
319 |
|
334 |
is( $private_shelf->can_be_viewed( $patron1->{borrowernumber} ), 1, 'The owner should be able to view his list' ); |
320 |
is( $private_shelf->can_be_viewed( $patron1->{borrowernumber} ), 1, 'The owner should be able to view his list' ); |
Lines 438-444
subtest 'Get shelves containing biblios' => sub {
Link Here
|
438 |
my $content3 = $shelf2->add_biblio( $biblio2->{biblionumber}, $patron2->{borrowernumber} ); |
424 |
my $content3 = $shelf2->add_biblio( $biblio2->{biblionumber}, $patron2->{borrowernumber} ); |
439 |
my $content4 = $shelf2->add_biblio( $biblio3->{biblionumber}, $patron2->{borrowernumber} ); |
425 |
my $content4 = $shelf2->add_biblio( $biblio3->{biblionumber}, $patron2->{borrowernumber} ); |
440 |
my $content5 = $shelf2->add_biblio( $biblio4->{biblionumber}, $patron2->{borrowernumber} ); |
426 |
my $content5 = $shelf2->add_biblio( $biblio4->{biblionumber}, $patron2->{borrowernumber} ); |
441 |
my $content6 = $shelf3->add_biblio( $biblio4->{biblionumber}, $patron2->{borrowernumber} ); |
427 |
my $content6 = $shelf3->add_biblio( $biblio4->{biblionumber}, $patron1->{borrowernumber} ); |
442 |
|
428 |
|
443 |
my $shelves_with_biblio1_for_any_patrons = Koha::Virtualshelves->get_shelves_containing_record( |
429 |
my $shelves_with_biblio1_for_any_patrons = Koha::Virtualshelves->get_shelves_containing_record( |
444 |
{ |
430 |
{ |
445 |
- |
|
|