|
Lines 4-10
Link Here
|
| 4 |
# Current state is very rudimentary. Please help to extend it! |
4 |
# Current state is very rudimentary. Please help to extend it! |
| 5 |
|
5 |
|
| 6 |
use Modern::Perl; |
6 |
use Modern::Perl; |
| 7 |
use Test::More tests => 16; |
7 |
use Test::More tests => 17; |
| 8 |
|
8 |
|
| 9 |
use Koha::Database; |
9 |
use Koha::Database; |
| 10 |
use t::lib::TestBuilder; |
10 |
use t::lib::TestBuilder; |
|
Lines 439-444
subtest do_checkin => sub {
Link Here
|
| 439 |
}; |
439 |
}; |
| 440 |
}; |
440 |
}; |
| 441 |
|
441 |
|
|
|
442 |
subtest do_checkout_with_sysprefs_override => sub { |
| 443 |
plan tests => 8; |
| 444 |
|
| 445 |
my $mockILS = Test::MockObject->new; |
| 446 |
my $server = { ils => $mockILS }; |
| 447 |
my $library = $builder->build_object( { class => 'Koha::Libraries' } ); |
| 448 |
my $institution = { |
| 449 |
id => $library->id, |
| 450 |
implementation => "ILS", |
| 451 |
policy => { |
| 452 |
checkin => "true", |
| 453 |
renewal => "true", |
| 454 |
checkout => "true", |
| 455 |
timeout => 100, |
| 456 |
retries => 5, |
| 457 |
} |
| 458 |
}; |
| 459 |
my $ils = C4::SIP::ILS->new($institution); |
| 460 |
my $item = $builder->build_sample_item( |
| 461 |
{ |
| 462 |
library => $library->branchcode, |
| 463 |
} |
| 464 |
); |
| 465 |
|
| 466 |
my $patron_under_noissuescharge = $builder->build_object( |
| 467 |
{ |
| 468 |
class => 'Koha::Patrons', |
| 469 |
value => { |
| 470 |
branchcode => $library->branchcode, |
| 471 |
} |
| 472 |
} |
| 473 |
); |
| 474 |
|
| 475 |
my $fee_under_noissuescharge = $builder->build( |
| 476 |
{ |
| 477 |
source => 'Accountline', |
| 478 |
value => { |
| 479 |
borrowernumber => $patron_under_noissuescharge->borrowernumber, |
| 480 |
amountoutstanding => 4, |
| 481 |
} |
| 482 |
} |
| 483 |
); |
| 484 |
|
| 485 |
my $patron_over_noissuescharge = $builder->build_object( |
| 486 |
|
| 487 |
{ |
| 488 |
class => 'Koha::Patrons', |
| 489 |
value => { |
| 490 |
branchcode => $library->branchcode, |
| 491 |
} |
| 492 |
} |
| 493 |
); |
| 494 |
|
| 495 |
my $fee_over_noissuescharge = $builder->build( |
| 496 |
{ |
| 497 |
source => 'Accountline', |
| 498 |
value => { |
| 499 |
borrowernumber => $patron_over_noissuescharge->borrowernumber, |
| 500 |
amountoutstanding => 6, |
| 501 |
} |
| 502 |
} |
| 503 |
); |
| 504 |
|
| 505 |
|
| 506 |
$server->{account}->{override_fine_on_checkout} = 0; |
| 507 |
|
| 508 |
t::lib::Mocks::mock_preference( 'AllFinesNeedOverride', '0' ); |
| 509 |
t::lib::Mocks::mock_preference( 'AllowFineOverride', '0' ); |
| 510 |
my $circ = $ils->checkout($patron_under_noissuescharge->cardnumber, $item->barcode, undef, undef, $server->{account}); |
| 511 |
is( $patron_under_noissuescharge->checkouts->count, 1, 'Checkout is allowed when the amount is under noissuecharge, AllFinesNeedOverride and AllowFineOverride disabled'); |
| 512 |
|
| 513 |
$circ = $ils->checkin( $item->barcode, C4::SIP::Sip::timestamp, undef, $library->branchcode ); |
| 514 |
|
| 515 |
$circ = $ils->checkout($patron_over_noissuescharge->cardnumber, $item->barcode, undef, undef, $server->{account}); |
| 516 |
is( $patron_over_noissuescharge->checkouts->count, 0, 'Checkout is blocked when the amount is over noissuecharge, AllFinesNeedOverride and AllowFineOverride disabled'); |
| 517 |
|
| 518 |
t::lib::Mocks::mock_preference( 'AllFinesNeedOverride', '0' ); |
| 519 |
t::lib::Mocks::mock_preference( 'AllowFineOverride', '1' ); |
| 520 |
|
| 521 |
$circ = $ils->checkout($patron_under_noissuescharge->cardnumber, $item->barcode, undef, undef, $server->{account}); |
| 522 |
is( $patron_under_noissuescharge->checkouts->count, 1, 'Checkout is allowed when the amount is under noissuecharge, AllFinesNeedOverride disabled and AllowFineOverride enabled'); |
| 523 |
|
| 524 |
$circ = $ils->checkin( $item->barcode, C4::SIP::Sip::timestamp, undef, $library->branchcode ); |
| 525 |
|
| 526 |
$circ = $ils->checkout($patron_over_noissuescharge->cardnumber, $item->barcode, undef, undef, $server->{account}); |
| 527 |
is( $patron_over_noissuescharge->checkouts->count, 0, 'Checkout is blocked when the amount is over noissuecharge, AllFinesNeedOverride disabled and AllowFineOverride enabled'); |
| 528 |
|
| 529 |
t::lib::Mocks::mock_preference( 'AllFinesNeedOverride', '1' ); |
| 530 |
t::lib::Mocks::mock_preference( 'AllowFineOverride', '0' ); |
| 531 |
|
| 532 |
$circ = $ils->checkout($patron_under_noissuescharge->cardnumber, $item->barcode, undef, undef, $server->{account}); |
| 533 |
is( $patron_under_noissuescharge->checkouts->count, 0, 'Checkout is blocked when the amount is under noissuecharge, AllFinesNeedOverride enabled and AllowFineOverride disabled'); |
| 534 |
|
| 535 |
$circ = $ils->checkout($patron_over_noissuescharge->cardnumber, $item->barcode, undef, undef, $server->{account}); |
| 536 |
is( $patron_over_noissuescharge->checkouts->count, 0, 'Checkout is blocked when the amount is over noissuecharge, AllFinesNeedOverride enabled and AllowFineOverride disabled'); |
| 537 |
|
| 538 |
t::lib::Mocks::mock_preference( 'AllFinesNeedOverride', '1' ); |
| 539 |
t::lib::Mocks::mock_preference( 'AllowFineOverride', '1' ); |
| 540 |
|
| 541 |
$circ = $ils->checkout($patron_under_noissuescharge->cardnumber, $item->barcode, undef, undef, $server->{account}); |
| 542 |
is( $patron_under_noissuescharge->checkouts->count, 0, 'Checkout is blocked when the amount is under noissuecharge, AllFinesNeedOverride and AllowFineOverride enabled'); |
| 543 |
|
| 544 |
$circ = $ils->checkout($patron_over_noissuescharge->cardnumber, $item->barcode, undef, undef, $server->{account}); |
| 545 |
is( $patron_over_noissuescharge->checkouts->count, 0, 'Checkout is blocked when the amount is over noissuecharge, AllFinesNeedOverride and AllowFineOverride enabled'); |
| 546 |
}; |
| 547 |
|
| 548 |
|
| 442 |
subtest do_checkout_with_patron_blocked => sub { |
549 |
subtest do_checkout_with_patron_blocked => sub { |
| 443 |
plan tests => 4; |
550 |
plan tests => 4; |
| 444 |
|
551 |
|
| 445 |
- |
|
|