From b8335606482f276f2bb3ba07ea7d392cb36c1a70 Mon Sep 17 00:00:00 2001 From: Arthur Suzuki 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