Lines 7-13
use Koha::Database;
Link Here
|
7 |
use Koha::DateUtils qw( dt_from_string ); |
7 |
use Koha::DateUtils qw( dt_from_string ); |
8 |
use Koha::Patrons; |
8 |
use Koha::Patrons; |
9 |
|
9 |
|
10 |
use Test::More tests => 61; |
10 |
use Test::More tests => 169; |
11 |
|
11 |
|
12 |
use_ok('Koha::Patron'); |
12 |
use_ok('Koha::Patron'); |
13 |
|
13 |
|
Lines 42-47
my $inheritCatCode = $builder->build({
Link Here
|
42 |
}, |
42 |
}, |
43 |
}); |
43 |
}); |
44 |
|
44 |
|
|
|
45 |
my $yesItypeCode = $builder->build( |
46 |
{ |
47 |
source => 'Itemtype', |
48 |
value => { |
49 |
itemtype => 'YESIT', |
50 |
checkprevcheckout => 'yes', |
51 |
}, |
52 |
} |
53 |
); |
54 |
|
55 |
my $noItypeCode = $builder->build( |
56 |
{ |
57 |
source => 'Itemtype', |
58 |
value => { |
59 |
itemtype => 'NOIT', |
60 |
checkprevcheckout => 'no', |
61 |
}, |
62 |
} |
63 |
); |
64 |
|
65 |
my $inheritItypeCode = $builder->build( |
66 |
{ |
67 |
source => 'Itemtype', |
68 |
value => { |
69 |
itemtype => 'INHERITIT', |
70 |
checkprevcheckout => 'inherit', |
71 |
}, |
72 |
} |
73 |
); |
74 |
|
45 |
# Create context for some tests late on in the file. |
75 |
# Create context for some tests late on in the file. |
46 |
my $library = $builder->build({ source => 'Branch' }); |
76 |
my $library = $builder->build({ source => 'Branch' }); |
47 |
my $staff = $builder->build({source => 'Borrower'}); |
77 |
my $staff = $builder->build({source => 'Borrower'}); |
Lines 50-55
t::lib::Mocks::mock_userenv({ branchcode => $library->{branchcode} });
Link Here
|
50 |
|
80 |
|
51 |
# wants_check_for_previous_checkout |
81 |
# wants_check_for_previous_checkout |
52 |
|
82 |
|
|
|
83 |
# We want to test the subroutine without passing the $item parameter |
53 |
# We expect the following result matrix: |
84 |
# We expect the following result matrix: |
54 |
# |
85 |
# |
55 |
# (1/0 indicates the return value of WantsCheckPrevCheckout; i.e. 1 says we |
86 |
# (1/0 indicates the return value of WantsCheckPrevCheckout; i.e. 1 says we |
Lines 205-210
map {
Link Here
|
205 |
} @{$_->{categories}}; |
236 |
} @{$_->{categories}}; |
206 |
} @{$mappings}; |
237 |
} @{$mappings}; |
207 |
|
238 |
|
|
|
239 |
|
240 |
# wants_check_for_previous_checkout |
241 |
|
242 |
# We want to test the subroutine by passing the $item parameter |
243 |
# We expect the following result matrix: |
244 |
# |
245 |
# (1/0 indicates the return value of WantsCheckPrevCheckout; i.e. 1 says we |
246 |
# should check whether the item was previously issued) |
247 |
# |
248 |
# | System Preference | hardyes | |
249 |
# |-------------------+-----------------------------------------------------------------------------------------------------------| |
250 |
# | Item Type Setting | yes | no | inherit | |
251 |
# |-------------------+-----------------------------------+-----------------------------------+-----------------------------------| |
252 |
# | Category Setting | yes | no | inherit | yes | no | inherit | yes | no | inherit | |
253 |
# |-------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------| |
254 |
# | Patron Setting | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | |
255 |
# |-------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---| |
256 |
# | Expected Result | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
257 |
# |
258 |
# |
259 |
# | System Preference | softyes | |
260 |
# |-------------------+-----------------------------------------------------------------------------------------------------------| |
261 |
# | Item Type Setting | yes | no | inherit | |
262 |
# |-------------------+-----------------------------------+-----------------------------------+-----------------------------------| |
263 |
# | Category Setting | yes | no | inherit | yes | no | inherit | yes | no | inherit | |
264 |
# |-------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------| |
265 |
# | Patron Setting | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | |
266 |
# |-------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---| |
267 |
# | Expected Result | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | |
268 |
# |
269 |
# |
270 |
# | System Preference | softno | |
271 |
# |-------------------+-----------------------------------------------------------------------------------------------------------| |
272 |
# | Item Type Setting | yes | no | inherit | |
273 |
# |-------------------+-----------------------------------+-----------------------------------+-----------------------------------| |
274 |
# | Category Setting | yes | no | inherit | yes | no | inherit | yes | no | inherit | |
275 |
# |-------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------| |
276 |
# | Patron Setting | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | |
277 |
# |-------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---| |
278 |
# | Expected Result | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | |
279 |
# |
280 |
# |
281 |
# | System Preference | hardno | |
282 |
# |-------------------+-----------------------------------------------------------------------------------------------------------| |
283 |
# | Item Type Setting | yes | no | inherit | |
284 |
# |-------------------+-----------------------------------+-----------------------------------+-----------------------------------| |
285 |
# | Category Setting | yes | no | inherit | yes | no | inherit | yes | no | inherit | |
286 |
# |-------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------| |
287 |
# | Patron Setting | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | y | n | i | |
288 |
# |-------------------+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---| |
289 |
# | Expected Result | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
290 |
|
291 |
my $itemMappings = [ |
292 |
{ |
293 |
syspref => 'hardyes', |
294 |
itypes => [ |
295 |
{ |
296 |
setting => 'yes', |
297 |
categories => [ |
298 |
{ |
299 |
setting => 'yes', |
300 |
patrons => [ |
301 |
{ setting => 'yes', result => 1 }, |
302 |
{ setting => 'no', result => 1 }, |
303 |
{ setting => 'inherit', result => 1 }, |
304 |
], |
305 |
}, |
306 |
{ |
307 |
setting => 'no', |
308 |
patrons => [ |
309 |
{ setting => 'yes', result => 1 }, |
310 |
{ setting => 'no', result => 1 }, |
311 |
{ setting => 'inherit', result => 1 }, |
312 |
], |
313 |
}, |
314 |
{ |
315 |
setting => 'inherit', |
316 |
patrons => [ |
317 |
{ setting => 'yes', result => 1 }, |
318 |
{ setting => 'no', result => 1 }, |
319 |
{ setting => 'inherit', result => 1 }, |
320 |
], |
321 |
}, |
322 |
], |
323 |
}, |
324 |
{ |
325 |
setting => 'no', |
326 |
categories => [ |
327 |
{ |
328 |
setting => 'yes', |
329 |
patrons => [ |
330 |
{ setting => 'yes', result => 1 }, |
331 |
{ setting => 'no', result => 1 }, |
332 |
{ setting => 'inherit', result => 1 }, |
333 |
], |
334 |
}, |
335 |
{ |
336 |
setting => 'no', |
337 |
patrons => [ |
338 |
{ setting => 'yes', result => 1 }, |
339 |
{ setting => 'no', result => 1 }, |
340 |
{ setting => 'inherit', result => 1 }, |
341 |
], |
342 |
}, |
343 |
{ |
344 |
setting => 'inherit', |
345 |
patrons => [ |
346 |
{ setting => 'yes', result => 1 }, |
347 |
{ setting => 'no', result => 1 }, |
348 |
{ setting => 'inherit', result => 1 }, |
349 |
], |
350 |
}, |
351 |
], |
352 |
}, |
353 |
{ |
354 |
setting => 'inherit', |
355 |
categories => [ |
356 |
{ |
357 |
setting => 'yes', |
358 |
patrons => [ |
359 |
{ setting => 'yes', result => 1 }, |
360 |
{ setting => 'no', result => 1 }, |
361 |
{ setting => 'inherit', result => 1 }, |
362 |
], |
363 |
}, |
364 |
{ |
365 |
setting => 'no', |
366 |
patrons => [ |
367 |
{ setting => 'yes', result => 1 }, |
368 |
{ setting => 'no', result => 1 }, |
369 |
{ setting => 'inherit', result => 1 }, |
370 |
], |
371 |
}, |
372 |
{ |
373 |
setting => 'inherit', |
374 |
patrons => [ |
375 |
{ setting => 'yes', result => 1 }, |
376 |
{ setting => 'no', result => 1 }, |
377 |
{ setting => 'inherit', result => 1 }, |
378 |
], |
379 |
}, |
380 |
], |
381 |
}, |
382 |
], |
383 |
}, |
384 |
{ |
385 |
syspref => 'softyes', |
386 |
itypes => [ |
387 |
{ |
388 |
setting => 'yes', |
389 |
categories => [ |
390 |
{ |
391 |
setting => 'yes', |
392 |
patrons => [ |
393 |
{ setting => 'yes', result => 1 }, |
394 |
{ setting => 'no', result => 1 }, |
395 |
{ setting => 'inherit', result => 1 }, |
396 |
], |
397 |
}, |
398 |
{ |
399 |
setting => 'no', |
400 |
patrons => [ |
401 |
{ setting => 'yes', result => 1 }, |
402 |
{ setting => 'no', result => 1 }, |
403 |
{ setting => 'inherit', result => 1 }, |
404 |
], |
405 |
}, |
406 |
{ |
407 |
setting => 'inherit', |
408 |
patrons => [ |
409 |
{ setting => 'yes', result => 1 }, |
410 |
{ setting => 'no', result => 1 }, |
411 |
{ setting => 'inherit', result => 1 }, |
412 |
], |
413 |
}, |
414 |
], |
415 |
}, |
416 |
{ |
417 |
setting => 'no', |
418 |
categories => [ |
419 |
{ |
420 |
setting => 'yes', |
421 |
patrons => [ |
422 |
{ setting => 'yes', result => 0 }, |
423 |
{ setting => 'no', result => 0 }, |
424 |
{ setting => 'inherit', result => 0 }, |
425 |
], |
426 |
}, |
427 |
{ |
428 |
setting => 'no', |
429 |
patrons => [ |
430 |
{ setting => 'yes', result => 0 }, |
431 |
{ setting => 'no', result => 0 }, |
432 |
{ setting => 'inherit', result => 0 }, |
433 |
], |
434 |
}, |
435 |
{ |
436 |
setting => 'inherit', |
437 |
patrons => [ |
438 |
{ setting => 'yes', result => 0 }, |
439 |
{ setting => 'no', result => 0 }, |
440 |
{ setting => 'inherit', result => 0 }, |
441 |
], |
442 |
}, |
443 |
], |
444 |
}, |
445 |
{ |
446 |
setting => 'inherit', |
447 |
categories => [ |
448 |
{ |
449 |
setting => 'yes', |
450 |
patrons => [ |
451 |
{ setting => 'yes', result => 1 }, |
452 |
{ setting => 'no', result => 0 }, |
453 |
{ setting => 'inherit', result => 1 }, |
454 |
], |
455 |
}, |
456 |
{ |
457 |
setting => 'no', |
458 |
patrons => [ |
459 |
{ setting => 'yes', result => 1 }, |
460 |
{ setting => 'no', result => 0 }, |
461 |
{ setting => 'inherit', result => 0 }, |
462 |
], |
463 |
}, |
464 |
{ |
465 |
setting => 'inherit', |
466 |
patrons => [ |
467 |
{ setting => 'yes', result => 1 }, |
468 |
{ setting => 'no', result => 0 }, |
469 |
{ setting => 'inherit', result => 1 }, |
470 |
], |
471 |
}, |
472 |
], |
473 |
}, |
474 |
], |
475 |
}, |
476 |
{ |
477 |
syspref => 'softno', |
478 |
itypes => [ |
479 |
{ |
480 |
setting => 'yes', |
481 |
categories => [ |
482 |
{ |
483 |
setting => 'yes', |
484 |
patrons => [ |
485 |
{ setting => 'yes', result => 1 }, |
486 |
{ setting => 'no', result => 1 }, |
487 |
{ setting => 'inherit', result => 1 }, |
488 |
], |
489 |
}, |
490 |
{ |
491 |
setting => 'no', |
492 |
patrons => [ |
493 |
{ setting => 'yes', result => 1 }, |
494 |
{ setting => 'no', result => 1 }, |
495 |
{ setting => 'inherit', result => 1 }, |
496 |
], |
497 |
}, |
498 |
{ |
499 |
setting => 'inherit', |
500 |
patrons => [ |
501 |
{ setting => 'yes', result => 1 }, |
502 |
{ setting => 'no', result => 1 }, |
503 |
{ setting => 'inherit', result => 1 }, |
504 |
], |
505 |
}, |
506 |
], |
507 |
}, |
508 |
{ |
509 |
setting => 'no', |
510 |
categories => [ |
511 |
{ |
512 |
setting => 'yes', |
513 |
patrons => [ |
514 |
{ setting => 'yes', result => 0 }, |
515 |
{ setting => 'no', result => 0 }, |
516 |
{ setting => 'inherit', result => 0 }, |
517 |
], |
518 |
}, |
519 |
{ |
520 |
setting => 'no', |
521 |
patrons => [ |
522 |
{ setting => 'yes', result => 0 }, |
523 |
{ setting => 'no', result => 0 }, |
524 |
{ setting => 'inherit', result => 0 }, |
525 |
], |
526 |
}, |
527 |
{ |
528 |
setting => 'inherit', |
529 |
patrons => [ |
530 |
{ setting => 'yes', result => 0 }, |
531 |
{ setting => 'no', result => 0 }, |
532 |
{ setting => 'inherit', result => 0 }, |
533 |
], |
534 |
}, |
535 |
], |
536 |
}, |
537 |
{ |
538 |
setting => 'inherit', |
539 |
categories => [ |
540 |
{ |
541 |
setting => 'yes', |
542 |
patrons => [ |
543 |
{ setting => 'yes', result => 1 }, |
544 |
{ setting => 'no', result => 0 }, |
545 |
{ setting => 'inherit', result => 1 }, |
546 |
], |
547 |
}, |
548 |
{ |
549 |
setting => 'no', |
550 |
patrons => [ |
551 |
{ setting => 'yes', result => 1 }, |
552 |
{ setting => 'no', result => 0 }, |
553 |
{ setting => 'inherit', result => 0 }, |
554 |
], |
555 |
}, |
556 |
{ |
557 |
setting => 'inherit', |
558 |
patrons => [ |
559 |
{ setting => 'yes', result => 1 }, |
560 |
{ setting => 'no', result => 0 }, |
561 |
{ setting => 'inherit', result => 0 }, |
562 |
], |
563 |
}, |
564 |
], |
565 |
}, |
566 |
], |
567 |
}, |
568 |
{ |
569 |
syspref => 'hardno', |
570 |
itypes => [ |
571 |
{ |
572 |
setting => 'yes', |
573 |
categories => [ |
574 |
{ |
575 |
setting => 'yes', |
576 |
patrons => [ |
577 |
{ setting => 'yes', result => 0 }, |
578 |
{ setting => 'no', result => 0 }, |
579 |
{ setting => 'inherit', result => 0 }, |
580 |
], |
581 |
}, |
582 |
{ |
583 |
setting => 'no', |
584 |
patrons => [ |
585 |
{ setting => 'yes', result => 0 }, |
586 |
{ setting => 'no', result => 0 }, |
587 |
{ setting => 'inherit', result => 0 }, |
588 |
], |
589 |
}, |
590 |
{ |
591 |
setting => 'inherit', |
592 |
patrons => [ |
593 |
{ setting => 'yes', result => 0 }, |
594 |
{ setting => 'no', result => 0 }, |
595 |
{ setting => 'inherit', result => 0 }, |
596 |
], |
597 |
}, |
598 |
], |
599 |
}, |
600 |
{ |
601 |
setting => 'no', |
602 |
categories => [ |
603 |
{ |
604 |
setting => 'yes', |
605 |
patrons => [ |
606 |
{ setting => 'yes', result => 0 }, |
607 |
{ setting => 'no', result => 0 }, |
608 |
{ setting => 'inherit', result => 0 }, |
609 |
], |
610 |
}, |
611 |
{ |
612 |
setting => 'no', |
613 |
patrons => [ |
614 |
{ setting => 'yes', result => 0 }, |
615 |
{ setting => 'no', result => 0 }, |
616 |
{ setting => 'inherit', result => 0 }, |
617 |
], |
618 |
}, |
619 |
{ |
620 |
setting => 'inherit', |
621 |
patrons => [ |
622 |
{ setting => 'yes', result => 0 }, |
623 |
{ setting => 'no', result => 0 }, |
624 |
{ setting => 'inherit', result => 0 }, |
625 |
], |
626 |
}, |
627 |
], |
628 |
}, |
629 |
{ |
630 |
setting => 'inherit', |
631 |
categories => [ |
632 |
{ |
633 |
setting => 'yes', |
634 |
patrons => [ |
635 |
{ setting => 'yes', result => 0 }, |
636 |
{ setting => 'no', result => 0 }, |
637 |
{ setting => 'inherit', result => 0 }, |
638 |
], |
639 |
}, |
640 |
{ |
641 |
setting => 'no', |
642 |
patrons => [ |
643 |
{ setting => 'yes', result => 0 }, |
644 |
{ setting => 'no', result => 0 }, |
645 |
{ setting => 'inherit', result => 0 }, |
646 |
], |
647 |
}, |
648 |
{ |
649 |
setting => 'inherit', |
650 |
patrons => [ |
651 |
{ setting => 'yes', result => 0 }, |
652 |
{ setting => 'no', result => 0 }, |
653 |
{ setting => 'inherit', result => 0 }, |
654 |
], |
655 |
}, |
656 |
], |
657 |
}, |
658 |
], |
659 |
} |
660 |
]; |
661 |
|
662 |
map { |
663 |
my $syspref = $_->{syspref}; |
664 |
t::lib::Mocks::mock_preference( 'checkprevcheckout', $syspref ); |
665 |
map { |
666 |
my $itypeCode = uc( $_->{setting} ) . 'IT'; |
667 |
my $item = $builder->build_sample_item( { itype => $itypeCode } ); |
668 |
map { |
669 |
my $catCode = $_->{setting} . 'Cat'; |
670 |
map { |
671 |
my $kpatron = $builder->build( |
672 |
{ |
673 |
source => 'Borrower', |
674 |
value => { |
675 |
checkprevcheckout => $_->{setting}, |
676 |
categorycode => $catCode, |
677 |
}, |
678 |
} |
679 |
); |
680 |
my $patron = Koha::Patrons->find( $kpatron->{borrowernumber} ); |
681 |
is( |
682 |
$patron->wants_check_for_previous_checkout($item), $_->{result}, |
683 |
"Predicate with syspref " |
684 |
. $syspref |
685 |
. ", cat " |
686 |
. $catCode |
687 |
. ", patron " |
688 |
. $_->{setting} |
689 |
. ", item type " |
690 |
. $itypeCode |
691 |
); |
692 |
} @{ $_->{patrons} }; |
693 |
} @{ $_->{categories} }; |
694 |
} @{ $_->{itypes} }; |
695 |
} @{$itemMappings}; |
696 |
|
208 |
# do_check_for_previous_checkout |
697 |
# do_check_for_previous_checkout |
209 |
|
698 |
|
210 |
# We want to test: |
699 |
# We want to test: |
211 |
- |
|
|