@@ -, +, @@
(follow-up)
- Fix the text in the ilsdi.pl?service=Describe&verb=CancelHold page
- Unit tests for CancelReservedFromId and GetReserve
- Do not delete row in reserves table if insert in old_reserves fails
---
C4/Reserves.pm | 21 +++++++++++++--------
koha-tmpl/opac-tmpl/prog/en/modules/ilsdi.tt | 2 +-
t/db_dependent/Reserves.t | 21 ++++++++++++++++++++-
3 files changed, 34 insertions(+), 10 deletions(-)
--- a/C4/Reserves.pm
+++ a/C4/Reserves.pm
@@ -1093,14 +1093,19 @@ sub CancelReserveFromId {
WHERE reserve_id = ?
};
$sth = $dbh->prepare($query);
- $sth->execute($reserve_id);
-
- $query = qq{
- DELETE FROM reserves
- WHERE reserve_id = ?
- };
- $sth = $dbh->prepare($query);
- $sth->execute($reserve_id);
+ my $rv = $sth->execute($reserve_id);
+
+ if ($rv) {
+ $query = qq{
+ DELETE FROM reserves
+ WHERE reserve_id = ?
+ };
+ $sth = $dbh->prepare($query);
+ $sth->execute($reserve_id);
+ } else {
+ warn "ERROR: Failed to move reserve $reserve_id to table old_reserves.";
+ return;
+ }
# now fix the priority on the others...
_FixPriority( $reserve->{biblionumber}, $reserve->{borrowernumber} );
--- a/koha-tmpl/opac-tmpl/prog/en/modules/ilsdi.tt
+++ a/koha-tmpl/opac-tmpl/prog/en/modules/ilsdi.tt
@@ -671,7 +671,7 @@
patron_id (Required)
the unique patron identifier in the ILS; the same identifier returned by LookupPatron or AuthenticatePatron
item_id (Required)
- system item identifier
+ system hold identifier (returned by GetRecords and GetPatronInfo into element 'reserve_id')
Example call
--- a/t/db_dependent/Reserves.t
+++ a/t/db_dependent/Reserves.t
@@ -2,7 +2,7 @@
use Modern::Perl;
-use Test::More tests => 8;
+use Test::More tests => 16;
use MARC::Record;
use C4::Branch;
@@ -199,3 +199,22 @@ is( $messages->{ResFound}->{borrowernumber},
is( $messages->{ResFound}->{borrowernumber},
$requesters{'RPL'},
'for generous library, its items fill first hold request in line (bug 10272)');
+
+my (undef, $reserves) = GetReservesFromBiblionumber($biblionumber);
+isa_ok($reserves, 'ARRAY');
+is(scalar @$reserves, 1, "Only one reserves for this biblio");
+my $reserve_id = $reserves->[0]->{reserve_id};
+
+$reserve = GetReserve($reserve_id);
+isa_ok($reserve, 'HASH', "GetReserve return");
+is($reserve->{biblionumber}, $biblionumber);
+
+$reserve = CancelReserveFromId($reserve_id);
+isa_ok($reserve, 'HASH', "CancelReserveFromId return");
+is($reserve->{biblionumber}, $biblionumber);
+
+$reserve = GetReserve($reserve_id);
+is($reserve, undef, "GetReserve returns undef after deletion");
+
+$reserve = CancelReserveFromId($reserve_id);
+is($reserve, undef, "CancelReserveFromId return undef if reserve does not exist");
--