Lines 46-52
use Koha::Items;
Link Here
|
46 |
use Koha::Item::Transfers; |
46 |
use Koha::Item::Transfers; |
47 |
use Koha::Checkouts; |
47 |
use Koha::Checkouts; |
48 |
use Koha::Patrons; |
48 |
use Koha::Patrons; |
49 |
use Koha::Patron::Debarments qw( GetDebarments AddDebarment DelUniqueDebarment ); |
49 |
use Koha::Patron::Debarments qw( AddDebarment DelUniqueDebarment ); |
50 |
use Koha::Holds; |
50 |
use Koha::Holds; |
51 |
use Koha::CirculationRules; |
51 |
use Koha::CirculationRules; |
52 |
use Koha::Subscriptions; |
52 |
use Koha::Subscriptions; |
Lines 90-108
sub test_debarment_on_checkout {
Link Here
|
90 |
); |
90 |
); |
91 |
my @caller = caller; |
91 |
my @caller = caller; |
92 |
my $line_number = $caller[2]; |
92 |
my $line_number = $caller[2]; |
93 |
AddIssue( $patron, $item->barcode, $due_date ); |
93 |
AddIssue( $patron->unblessed, $item->barcode, $due_date ); |
94 |
|
94 |
|
95 |
my ( undef, $message ) = AddReturn( $item->barcode, $library->{branchcode}, undef, $return_date ); |
95 |
my ( undef, $message ) = AddReturn( $item->barcode, $library->{branchcode}, undef, $return_date ); |
96 |
is( $message->{WasReturned} && exists $message->{Debarred}, 1, 'AddReturn must have debarred the patron' ) |
96 |
is( $message->{WasReturned} && exists $message->{Debarred}, 1, 'AddReturn must have debarred the patron' ) |
97 |
or diag('AddReturn returned message ' . Dumper $message ); |
97 |
or diag('AddReturn returned message ' . Dumper $message ); |
98 |
my $debarments = Koha::Patron::Debarments::GetDebarments( |
98 |
my $suspensions = $patron->restrictions->search({ type => 'SUSPENSION' } ); |
99 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
99 |
is( $suspensions->count, 1, 'Test at line ' . $line_number ); |
100 |
is( scalar(@$debarments), 1, 'Test at line ' . $line_number ); |
|
|
101 |
|
100 |
|
102 |
is( $debarments->[0]->{expiration}, |
101 |
my $THE_suspension = $suspensions->next; |
|
|
102 |
is( $THE_suspension->expiration, |
103 |
$expected_expiration_date, 'Test at line ' . $line_number ); |
103 |
$expected_expiration_date, 'Test at line ' . $line_number ); |
104 |
Koha::Patron::Debarments::DelUniqueDebarment( |
104 |
Koha::Patron::Debarments::DelUniqueDebarment( |
105 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
105 |
{ borrowernumber => $patron->borrowernumber, type => 'SUSPENSION' } ); |
106 |
}; |
106 |
}; |
107 |
|
107 |
|
108 |
my $schema = Koha::Database->schema; |
108 |
my $schema = Koha::Database->schema; |
Lines 2507-2513
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
2507 |
plan tests => 8; |
2507 |
plan tests => 8; |
2508 |
|
2508 |
|
2509 |
my $library = $builder->build( { source => 'Branch' } ); |
2509 |
my $library = $builder->build( { source => 'Branch' } ); |
2510 |
my $patron = $builder->build( { source => 'Borrower', value => { categorycode => $patron_category->{categorycode} } } ); |
2510 |
my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { categorycode => $patron_category->{categorycode} } } ); |
2511 |
|
2511 |
|
2512 |
# Add 2 items |
2512 |
# Add 2 items |
2513 |
my $biblionumber = $builder->build_sample_biblio( |
2513 |
my $biblionumber = $builder->build_sample_biblio( |
Lines 2548-2562
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
2548 |
my $now = dt_from_string; |
2548 |
my $now = dt_from_string; |
2549 |
my $five_days_ago = $now->clone->subtract( days => 5 ); |
2549 |
my $five_days_ago = $now->clone->subtract( days => 5 ); |
2550 |
my $ten_days_ago = $now->clone->subtract( days => 10 ); |
2550 |
my $ten_days_ago = $now->clone->subtract( days => 10 ); |
2551 |
AddIssue( $patron, $item_1->barcode, $five_days_ago ); # Add an overdue |
2551 |
AddIssue( $patron->unblessed, $item_1->barcode, $five_days_ago ); # Add an overdue |
2552 |
AddIssue( $patron, $item_2->barcode, $ten_days_ago ) |
2552 |
AddIssue( $patron->unblessed, $item_2->barcode, $ten_days_ago ) |
2553 |
; # Add another overdue |
2553 |
; # Add another overdue |
2554 |
|
2554 |
|
2555 |
t::lib::Mocks::mock_preference( 'CumulativeRestrictionPeriods', '0' ); |
2555 |
t::lib::Mocks::mock_preference( 'CumulativeRestrictionPeriods', '0' ); |
2556 |
AddReturn( $item_1->barcode, $library->{branchcode}, undef, $now ); |
2556 |
AddReturn( $item_1->barcode, $library->{branchcode}, undef, $now ); |
2557 |
my $debarments = Koha::Patron::Debarments::GetDebarments( |
2557 |
my $suspensions = $patron->restrictions->search( { type => 'SUSPENSION' } ); |
2558 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
2558 |
is( $suspensions->count, 1, "Suspension added" ); |
2559 |
is( scalar(@$debarments), 1 ); |
2559 |
my $THE_suspension = $suspensions->next; |
2560 |
|
2560 |
|
2561 |
# FIXME Is it right? I'd have expected 5 * 2 - 1 instead |
2561 |
# FIXME Is it right? I'd have expected 5 * 2 - 1 instead |
2562 |
# Same for the others |
2562 |
# Same for the others |
Lines 2567-2578
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
2567 |
dateonly => 1 |
2567 |
dateonly => 1 |
2568 |
} |
2568 |
} |
2569 |
); |
2569 |
); |
2570 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
2570 |
is( $THE_suspension->expiration, $expected_expiration, "Suspesion expiration set" ); |
2571 |
|
2571 |
|
2572 |
AddReturn( $item_2->barcode, $library->{branchcode}, undef, $now ); |
2572 |
AddReturn( $item_2->barcode, $library->{branchcode}, undef, $now ); |
2573 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
2573 |
$suspensions = $patron->restrictions->search( { type => 'SUSPENSION' } ); |
2574 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
2574 |
is( $suspensions->count, 1, "Only one suspension" ); |
2575 |
is( scalar(@$debarments), 1 ); |
2575 |
$THE_suspension = $suspensions->next; |
|
|
2576 |
|
2576 |
$expected_expiration = output_pref( |
2577 |
$expected_expiration = output_pref( |
2577 |
{ |
2578 |
{ |
2578 |
dt => $now->clone->add( days => ( 10 - 1 ) * 2 ), |
2579 |
dt => $now->clone->add( days => ( 10 - 1 ) * 2 ), |
Lines 2580-2598
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
2580 |
dateonly => 1 |
2581 |
dateonly => 1 |
2581 |
} |
2582 |
} |
2582 |
); |
2583 |
); |
2583 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
2584 |
is( $THE_suspension->expiration, $expected_expiration, "Suspension expiration date updated" ); |
2584 |
|
2585 |
|
2585 |
Koha::Patron::Debarments::DelUniqueDebarment( |
2586 |
Koha::Patron::Debarments::DelUniqueDebarment( |
2586 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
2587 |
{ borrowernumber => $patron->borrowernumber, type => 'SUSPENSION' } ); |
2587 |
|
2588 |
|
2588 |
t::lib::Mocks::mock_preference( 'CumulativeRestrictionPeriods', '1' ); |
2589 |
t::lib::Mocks::mock_preference( 'CumulativeRestrictionPeriods', '1' ); |
2589 |
AddIssue( $patron, $item_1->barcode, $five_days_ago ); # Add an overdue |
2590 |
AddIssue( $patron->unblessed, $item_1->barcode, $five_days_ago ); # Add an overdue |
2590 |
AddIssue( $patron, $item_2->barcode, $ten_days_ago ) |
2591 |
AddIssue( $patron->unblessed, $item_2->barcode, $ten_days_ago ) |
2591 |
; # Add another overdue |
2592 |
; # Add another overdue |
2592 |
AddReturn( $item_1->barcode, $library->{branchcode}, undef, $now ); |
2593 |
AddReturn( $item_1->barcode, $library->{branchcode}, undef, $now ); |
2593 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
2594 |
$suspensions = $patron->restrictions->search( { type => 'SUSPENSION' } ); |
2594 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
2595 |
is( $suspensions->count, 1, "Only one suspension" ); |
2595 |
is( scalar(@$debarments), 1 ); |
2596 |
$THE_suspension = $suspensions->next; |
|
|
2597 |
|
2596 |
$expected_expiration = output_pref( |
2598 |
$expected_expiration = output_pref( |
2597 |
{ |
2599 |
{ |
2598 |
dt => $now->clone->add( days => ( 5 - 1 ) * 2 ), |
2600 |
dt => $now->clone->add( days => ( 5 - 1 ) * 2 ), |
Lines 2600-2611
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
2600 |
dateonly => 1 |
2602 |
dateonly => 1 |
2601 |
} |
2603 |
} |
2602 |
); |
2604 |
); |
2603 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
2605 |
is( $THE_suspension->expiration, $expected_expiration, "Suspension expiration date updated" ); |
2604 |
|
2606 |
|
2605 |
AddReturn( $item_2->barcode, $library->{branchcode}, undef, $now ); |
2607 |
AddReturn( $item_2->barcode, $library->{branchcode}, undef, $now ); |
2606 |
$debarments = Koha::Patron::Debarments::GetDebarments( |
2608 |
$suspensions = $patron->restrictions->search( { type => 'SUSPENSION' } ); |
2607 |
{ borrowernumber => $patron->{borrowernumber}, type => 'SUSPENSION' } ); |
2609 |
is( $suspensions->count, 1, "Only one suspension" ); |
2608 |
is( scalar(@$debarments), 1 ); |
2610 |
$THE_suspension = $suspensions->next; |
|
|
2611 |
|
2609 |
$expected_expiration = output_pref( |
2612 |
$expected_expiration = output_pref( |
2610 |
{ |
2613 |
{ |
2611 |
dt => $now->clone->add( days => ( 5 - 1 ) * 2 + ( 10 - 1 ) * 2 ), |
2614 |
dt => $now->clone->add( days => ( 5 - 1 ) * 2 + ( 10 - 1 ) * 2 ), |
Lines 2613-2626
subtest 'AddReturn + CumulativeRestrictionPeriods' => sub {
Link Here
|
2613 |
dateonly => 1 |
2616 |
dateonly => 1 |
2614 |
} |
2617 |
} |
2615 |
); |
2618 |
); |
2616 |
is( $debarments->[0]->{expiration}, $expected_expiration ); |
2619 |
is( $THE_suspension->expiration, $expected_expiration, "Suspension expiration date updated" ); |
2617 |
}; |
2620 |
}; |
2618 |
|
2621 |
|
2619 |
subtest 'AddReturn + suspension_chargeperiod' => sub { |
2622 |
subtest 'AddReturn + suspension_chargeperiod' => sub { |
2620 |
plan tests => 27; |
2623 |
plan tests => 27; |
2621 |
|
2624 |
|
2622 |
my $library = $builder->build( { source => 'Branch' } ); |
2625 |
my $library = $builder->build( { source => 'Branch' } ); |
2623 |
my $patron = $builder->build( { source => 'Borrower', value => { categorycode => $patron_category->{categorycode} } } ); |
2626 |
my $patron = $builder->build_object( { class => 'Koha::Patrons', value => { categorycode => $patron_category->{categorycode} } } ); |
2624 |
|
2627 |
|
2625 |
my $biblionumber = $builder->build_sample_biblio( |
2628 |
my $biblionumber = $builder->build_sample_biblio( |
2626 |
{ |
2629 |
{ |
Lines 2904-2911
subtest 'AddReturn | is_overdue' => sub {
Link Here
|
2904 |
t::lib::Mocks::mock_preference('MaxFine', '100'); |
2907 |
t::lib::Mocks::mock_preference('MaxFine', '100'); |
2905 |
|
2908 |
|
2906 |
my $library = $builder->build( { source => 'Branch' } ); |
2909 |
my $library = $builder->build( { source => 'Branch' } ); |
2907 |
my $patron = $builder->build( { source => 'Borrower', value => { categorycode => $patron_category->{categorycode} } } ); |
2910 |
my $patron = $builder->build_object( |
2908 |
my $manager = $builder->build_object({ class => "Koha::Patrons" }); |
2911 |
{ |
|
|
2912 |
class => 'Koha::Patrons', |
2913 |
value => { categorycode => $patron_category->{categorycode} } |
2914 |
} |
2915 |
); |
2916 |
my $manager = $builder->build_object( { class => "Koha::Patrons" } ); |
2909 |
t::lib::Mocks::mock_userenv({ patron => $manager, branchcode => $manager->branchcode }); |
2917 |
t::lib::Mocks::mock_userenv({ patron => $manager, branchcode => $manager->branchcode }); |
2910 |
|
2918 |
|
2911 |
my $item = $builder->build_sample_item( |
2919 |
my $item = $builder->build_sample_item( |
Lines 2935-2941
subtest 'AddReturn | is_overdue' => sub {
Link Here
|
2935 |
my $two_days_ago = $now->clone->subtract( days => 2 ); |
2943 |
my $two_days_ago = $now->clone->subtract( days => 2 ); |
2936 |
my $five_days_ago = $now->clone->subtract( days => 5 ); |
2944 |
my $five_days_ago = $now->clone->subtract( days => 5 ); |
2937 |
my $ten_days_ago = $now->clone->subtract( days => 10 ); |
2945 |
my $ten_days_ago = $now->clone->subtract( days => 10 ); |
2938 |
$patron = Koha::Patrons->find( $patron->{borrowernumber} ); |
|
|
2939 |
|
2946 |
|
2940 |
# No return date specified, today will be used => 10 days overdue charged |
2947 |
# No return date specified, today will be used => 10 days overdue charged |
2941 |
AddIssue( $patron->unblessed, $item->barcode, $ten_days_ago ); # date due was 10d ago |
2948 |
AddIssue( $patron->unblessed, $item->barcode, $ten_days_ago ); # date due was 10d ago |
2942 |
- |
|
|