|
Lines 18-24
Link Here
|
| 18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
| 19 |
|
19 |
|
| 20 |
use Test::NoWarnings; |
20 |
use Test::NoWarnings; |
| 21 |
use Test::More tests => 68; |
21 |
use Test::More tests => 66; |
| 22 |
use DateTime::Duration; |
22 |
use DateTime::Duration; |
| 23 |
|
23 |
|
| 24 |
use t::lib::Mocks; |
24 |
use t::lib::Mocks; |
|
Lines 519-553
is(
Link Here
|
| 519 |
# |
519 |
# |
| 520 |
############################################## |
520 |
############################################## |
| 521 |
|
521 |
|
| 522 |
my $itemnumber4 = Koha::Item->new( |
522 |
subtest 'AddReturn: Update notforloanstatus according to UpdateNotForLoanStatusOnCheckout' => sub { |
| 523 |
{ |
523 |
plan tests => 5; |
| 524 |
biblionumber => $biblionumber, |
|
|
| 525 |
barcode => 'barcode_6', |
| 526 |
itemcallnumber => 'callnumber6', |
| 527 |
homebranch => $branchcode_1, |
| 528 |
holdingbranch => $branchcode_1, |
| 529 |
notforloan => -1, |
| 530 |
itype => $itemtype, |
| 531 |
location => 'loc1' |
| 532 |
}, |
| 533 |
)->store->itemnumber; |
| 534 |
|
| 535 |
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} ); |
| 536 |
AddIssue( $patron_2, 'barcode_6', dt_from_string ); |
| 537 |
$item = Koha::Items->find( $itemnumber4 ); |
| 538 |
ok( $item->notforloan eq -1, 'UpdateNotForLoanStatusOnCheckout does not modify value when not enabled' ); |
| 539 |
|
| 540 |
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', '-1: 0' ); |
| 541 |
AddReturn( 'barcode_6', $branchcode_1 ); |
| 542 |
my $test = AddIssue( $patron_2, 'barcode_6', dt_from_string ); |
| 543 |
$item = Koha::Items->find( $itemnumber4 ); |
| 544 |
ok( $item->notforloan eq 0, q{UpdateNotForLoanStatusOnCheckout updates notforloan value from -1 to 0 with setting "-1: 0"} ); |
| 545 |
|
| 546 |
AddIssue( $patron_2, 'barcode_6', dt_from_string ); |
| 547 |
AddReturn( 'barcode_6', $branchcode_1 ); |
| 548 |
$item = Koha::Items->find( $itemnumber4 ); |
| 549 |
ok( $item->notforloan eq 0, q{UpdateNotForLoanStatusOnCheckout does not update notforloan value from 0 with setting "-1: 0"} ); |
| 550 |
|
524 |
|
|
|
525 |
my $itemnumber4 = Koha::Item->new( |
| 526 |
{ |
| 527 |
biblionumber => $biblionumber, |
| 528 |
barcode => 'barcode_6', |
| 529 |
itemcallnumber => 'callnumber6', |
| 530 |
homebranch => $branchcode_1, |
| 531 |
holdingbranch => $branchcode_1, |
| 532 |
notforloan => -1, |
| 533 |
itype => $itemtype, |
| 534 |
location => 'loc1' |
| 535 |
}, |
| 536 |
)->store->itemnumber; |
| 537 |
|
| 538 |
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} ); |
| 539 |
AddIssue( $patron_2, 'barcode_6', dt_from_string ); |
| 540 |
$item = Koha::Items->find($itemnumber4); |
| 541 |
ok( $item->notforloan eq -1, 'UpdateNotForLoanStatusOnCheckout does not modify value when not enabled' ); |
| 542 |
AddReturn( 'barcode_6', $branchcode_1 ); |
| 543 |
|
| 544 |
t::lib::Mocks::mock_preference( |
| 545 |
'UpdateNotForLoanStatusOnCheckout', q{ _ALL_: |
| 546 |
-1: 0 |
| 547 |
} |
| 548 |
); |
| 549 |
$item->notforloan(-1)->store; |
| 550 |
my $test = AddIssue( $patron_2, 'barcode_6', dt_from_string ); |
| 551 |
$item = Koha::Items->find($itemnumber4); |
| 552 |
ok( |
| 553 |
$item->notforloan eq 0, |
| 554 |
q{UpdateNotForLoanStatusOnCheckout updates notforloan value from -1 to 0 with setting "_ALL_: -1: 0"} |
| 555 |
); |
| 556 |
AddReturn( 'barcode_6', $branchcode_1 ); |
| 557 |
|
| 558 |
$item->notforloan(1)->store; |
| 559 |
AddIssue( $patron_2, 'barcode_6', dt_from_string ); |
| 560 |
$item = Koha::Items->find($itemnumber4); |
| 561 |
ok( |
| 562 |
$item->notforloan eq 1, |
| 563 |
q{UpdateNotForLoanStatusOnCheckout does not update notforloan value from 1 with setting "_ALL_: -1: 0"} |
| 564 |
); |
| 565 |
AddReturn( 'barcode_6', $branchcode_1 ); |
| 566 |
|
| 567 |
t::lib::Mocks::mock_preference( |
| 568 |
'UpdateNotForLoanStatusOnCheckout', q{ |
| 569 |
_ALL_: |
| 570 |
-1: 0 |
| 571 |
} . $itemtype . q{: |
| 572 |
-1: 1 |
| 573 |
} |
| 574 |
); |
| 575 |
|
| 576 |
$item->notforloan(-1)->store; |
| 577 |
AddIssue( $patron_2, 'barcode_6', dt_from_string ); |
| 578 |
$item = Koha::Items->find($itemnumber4); |
| 579 |
ok( $item->notforloan eq 1, q{UpdateNotForLoanStatusOnCheckout uses the most specific rule to update notforloan } ); |
| 580 |
AddReturn( 'barcode_6', $branchcode_1 ); |
| 581 |
|
| 582 |
t::lib::Mocks::mock_preference( |
| 583 |
'UpdateNotForLoanStatusOnCheckout', q{ |
| 584 |
_ALL_: |
| 585 |
-1: 0 |
| 586 |
NOT_} . $itemtype . q{: |
| 587 |
-1: 1 |
| 588 |
} |
| 589 |
); |
| 590 |
|
| 591 |
$item->notforloan(-1)->store; |
| 592 |
AddIssue( $patron_2, 'barcode_6', dt_from_string ); |
| 593 |
$item = Koha::Items->find($itemnumber4); |
| 594 |
ok( |
| 595 |
$item->notforloan eq 0, |
| 596 |
q{UpdateNotForLoanStatusOnCheckout uses the default rule (_ALL_) if no rule matches the itype} |
| 597 |
); |
| 598 |
AddReturn( 'barcode_6', $branchcode_1 ); |
| 599 |
|
| 600 |
$item->delete; |
| 601 |
}; |
| 551 |
|
602 |
|
| 552 |
########################################## |
603 |
########################################## |
| 553 |
# |
604 |
# |
| 554 |
- |
|
|