Bug 18958: (follow-up) Ensure hold fill target reserve_id is set for all hold types

MapItemsToHoldRequests has three sections: Local holds, item level holds, bib level holds

Only one of them was setting the reserve_id. This patch makes al three set it and adds tests

To test:
1 - Repeat test plan on bug
2 - sudo koha-mysql kohadev
    SELECT * FROM hold_fill_targets
3 - Ensure reserve_id is set at appropriate times
4 - prove -v  t/db_dependent/HoldsQueue.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Bug 18958: (QA follow-up) Fix number of tests

In HoldsQueue.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
(cherry picked from commit b255ca7c6e)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit bac2e6892a)

Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
This commit is contained in:
Nick Clemens 2020-08-25 10:35:02 +00:00 committed by Aleisha Amohia
parent c93f56c5ba
commit 8383009cc6
2 changed files with 11 additions and 3 deletions

View File

@ -481,6 +481,7 @@ sub MapItemsToHoldRequests {
biblionumber => $request->{biblionumber},
holdingbranch => $items_by_itemnumber{ $request->{itemnumber} }->{holdingbranch},
pickup_branch => $request->{branchcode} || $request->{borrowerbranch},
reserve_id => $request->{reserve_id},
item_level => $request->{item_level_hold},
reservedate => $request->{reservedate},
reservenotes => $request->{reservenotes},
@ -656,6 +657,7 @@ sub MapItemsToHoldRequests {
biblionumber => $request->{biblionumber},
holdingbranch => $holdingbranch,
pickup_branch => $pickup_branch,
reserve_id => $request->{reserve_id},
item_level => $request->{item_level_hold},
reservedate => $request->{reservedate},
reservenotes => $request->{reservenotes},

View File

@ -8,7 +8,7 @@
use Modern::Perl;
use Test::More tests => 53;
use Test::More tests => 55;
use Data::Dumper;
use C4::Calendar;
@ -637,6 +637,8 @@ $reserve_id = AddReserve( $library_A, $borrowernumber, $biblionumber, '', 1 );
C4::HoldsQueue::CreateQueue();
$holds_queue = $dbh->selectall_arrayref( "SELECT * FROM tmp_holdsqueue", { Slice => {} } );
is( @$holds_queue, 1, "Hold where pickup branch matches home branch targeted" );
my $target_rs = $schema->resultset('HoldFillTarget');
is( $target_rs->next->reserve_id, $reserve_id, "Reserve id correctly set in hold fill target for title level hold" );
Koha::Holds->find( $reserve_id )->cancel;
# Holding branch matches pickup branch
@ -795,7 +797,7 @@ Koha::Holds->find( $reserve_id )->cancel;
subtest "Test Local Holds Priority - Bib level" => sub {
plan tests => 2;
plan tests => 3;
Koha::Biblios->delete();
t::lib::Mocks::mock_preference( 'LocalHoldsPriority', 1 );
@ -837,6 +839,7 @@ subtest "Test Local Holds Priority - Bib level" => sub {
C4::HoldsQueue::CreateQueue();
my $queue_rs = $schema->resultset('TmpHoldsqueue');
my $target_rs = $schema->resultset('HoldFillTarget');
is( $queue_rs->count(), 1,
"Hold queue contains one hold" );
is(
@ -844,6 +847,7 @@ subtest "Test Local Holds Priority - Bib level" => sub {
$local_patron->borrowernumber,
"We should pick the local hold over the next available"
);
is( $target_rs->next->reserve_id, $reserve_id2, "Reserve id correctly set in hold fill target" );
};
subtest "Test Local Holds Priority - Item level" => sub {
@ -1075,7 +1079,7 @@ subtest "Test Local Holds Priority - Ensure no duplicate requests in holds queue
subtest "Item level holds info is preserved (Bug 25783)" => sub {
plan tests => 3;
plan tests => 4;
$dbh->do("DELETE FROM tmp_holdsqueue");
$dbh->do("DELETE FROM hold_fill_targets");
@ -1128,6 +1132,8 @@ subtest "Item level holds info is preserved (Bug 25783)" => sub {
my $queue_line_1 = $queue_rs->next;
is( $queue_line_1->item_level_request, 1, 'Request is correctly advertised as item-level' );
my $target_rs = $schema->resultset('HoldFillTarget')->search({borrowernumber=>$patron_1->borrowernumber});;
is( $target_rs->next->reserve_id, $reserve_id_1, "Reserve id correctly set in hold fill target for item level hold" );
my $queue_line_2 = $queue_rs->next;
is( $queue_line_2->item_level_request, 0, 'Request is correctly advertised as biblio-level' );