From 55c1b4bd04149f57d037cfd5019e2320ae60dee2 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Mon, 14 Apr 2014 18:44:07 +0000 Subject: [PATCH] Bug 12079: ensure that CheckReserves() includes reserve_id in its response This patch modifies _Findgroupreserve so that its one caller, CheckReserves(), would include the reserve_id field in the hold request it returns. Failure to include reserve_id in every circumstance resulted in bug 11947. This patch is therefore a complementary fix for that bug, but is not meant to preempt the direct fix for that bug. To test: [1] Verify that t/db_dependent/Reserves.t passes. [2] Verify that the following test plan taken from the patch for bug 11947 works for this patch *without* applying the patch for 11947: * have a few borrowers, say 4. * have a biblio with a single item (you can scale this up, it should work just the same.) * issue the item to borrower A * have borrowers B, C, and D place a hold on the item * return the item, acknowledge that it'll be put aside for B. * view the holds on the item. Without the patch: * the hold priorities in the UI end up being "waiting, 2, 1" when they should be "waiting, 1, 2". * in the database "reserves" table, they're really "0, 2, 3" when they should be "0, 1, 2". With the patch: * the hold priorities in the UI end up being "waiting, 1, 2" * in the database, they're "0, 1, 2" Signed-off-by: Galen Charlton --- C4/Reserves.pm | 6 ++++-- t/db_dependent/Reserves.t | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index eb1ae2b..370b2c8 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -1819,7 +1819,8 @@ sub _Findgroupreserve { reserves.priority AS priority, reserves.timestamp AS timestamp, biblioitems.biblioitemnumber AS biblioitemnumber, - reserves.itemnumber AS itemnumber + reserves.itemnumber AS itemnumber, + reserves.reserve_id AS reserve_id FROM reserves JOIN biblioitems USING (biblionumber) JOIN hold_fill_targets USING (biblionumber, borrowernumber) @@ -1850,7 +1851,8 @@ sub _Findgroupreserve { reserves.priority AS priority, reserves.timestamp AS timestamp, reserveconstraints.biblioitemnumber AS biblioitemnumber, - reserves.itemnumber AS itemnumber + reserves.itemnumber AS itemnumber, + reserves.reserve_id AS reserve_id FROM reserves LEFT JOIN reserveconstraints ON reserves.biblionumber = reserveconstraints.biblionumber WHERE reserves.biblionumber = ? diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index 4b0058c..bd3aa60 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -2,7 +2,7 @@ use Modern::Perl; -use Test::More tests => 31; +use Test::More tests => 32; use MARC::Record; use DateTime::Duration; @@ -101,6 +101,8 @@ my ($status, $reserve, $all_reserves) = CheckReserves($itemnumber, $barcode); is($status, "Reserved", "CheckReserves Test 1"); +ok(exists($reserve->{reserve_id}), 'CheckReserves() include reserve_id in its response'); + ($status, $reserve, $all_reserves) = CheckReserves($itemnumber); is($status, "Reserved", "CheckReserves Test 2"); -- 1.7.10.4