From b8335606482f276f2bb3ba07ea7d392cb36c1a70 Mon Sep 17 00:00:00 2001
From: Arthur Suzuki <arthur.suzuki@biblibre.com>
Date: Mon, 27 Jan 2020 05:41:05 +0100
Subject: [PATCH] Bug 22379: Unit tests for CancelHold service
---
t/db_dependent/ILSDI_Services.t | 62 ++++++++++++++++++++++++++++++++-
1 file changed, 61 insertions(+), 1 deletion(-)
diff --git a/t/db_dependent/ILSDI_Services.t b/t/db_dependent/ILSDI_Services.t
index 72681afd69..2f48c5a4b8 100755
--- a/t/db_dependent/ILSDI_Services.t
+++ b/t/db_dependent/ILSDI_Services.t
@@ -19,7 +19,7 @@ use Modern::Perl;
use CGI qw ( -utf8 );
-use Test::More tests => 10;
+use Test::More tests => 11;
use Test::MockModule;
use t::lib::Mocks;
use t::lib::TestBuilder;
@@ -27,6 +27,7 @@ use t::lib::Dates;
use C4::Items qw( ModItemTransfer );
use C4::Circulation qw( AddIssue );
+use C4::Reserves qw (AddReserve ModReserve ModReserveAffect ModReserveStatus);
use Koha::AuthUtils;
use Koha::DateUtils;
@@ -737,6 +738,65 @@ subtest 'RenewHold' => sub {
$schema->storage->txn_rollback;
};
+subtest 'CancelHold' => sub {
+ plan tests => 4;
+
+ $schema->storage->txn_begin;
+
+ my $cgi = new CGI;
+
+ my $library = $builder->build_object({
+ class => 'Koha::Libraries',
+ });
+
+ my $patron = $builder->build_object( { class => 'Koha::Patrons',
+ value => {
+ branchcode => $library->branchcode,
+ },
+ } );
+
+ my $patron2 = $builder->build_object( { class => 'Koha::Patrons',
+ value => {
+ branchcode => $library->branchcode,
+ },
+ } );
+
+ my $item = $builder->build_sample_item({ library => $library->branchcode });
+
+ my $reserve = C4::Reserves::AddReserve({branchcode => $library->branchcode,
+ borrowernumber => $patron->borrowernumber,
+ biblionumber => $item->biblionumber });
+
+ # Affecting the reserve sets it to a waiting state
+ C4::Reserves::ModReserveAffect( $item->itemnumber,
+ $patron->borrowernumber,
+ undef,
+ $reserve,
+ );
+
+ $cgi->param( patron_id => $patron2->borrowernumber );
+ $cgi->param( item_id => $reserve );
+
+
+ my $reply = C4::ILSDI::Services::CancelHold($cgi);
+ is( $reply->{code}, 'BorrowerCannotCancelHold', 'If the patron is wrong, BorrowerCannotCancelHold should be returned');
+
+ $cgi->param( patron_id => $patron->borrowernumber );
+ $reply = C4::ILSDI::Services::CancelHold($cgi);
+ is( $reply->{code}, 'BorrowerCannotCancelHold', 'If reserve in a Waiting state, patron cannot cancel');
+
+ C4::Reserves::ModReserveStatus( $item->itemnumber, 'T' );
+ $reply = C4::ILSDI::Services::CancelHold($cgi);
+ is( $reply->{code}, 'BorrowerCannotCancelHold', 'If reserve in a Transfer state, patron cannot cancel');
+
+ C4::Reserves::ModReserve( {rank => 1, reserve_id => $reserve, branchcode => $library->branchcode} );
+ $cgi->param( item_id => $reserve );
+ $reply = C4::ILSDI::Services::CancelHold($cgi);
+ is( $reply->{code}, 'Canceled', 'If the patron is fine and reserve not waiting, Canceled should be returned and reserve canceled');
+
+ $schema->storage->txn_rollback;
+};
+
subtest 'GetPatronInfo paginated loans' => sub {
plan tests => 7;
--
2.20.1