From 51ccfbefed08b39512b3fdeec4e92ea8dee397cc 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 | 63 ++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/ILSDI_Services.t b/t/db_dependent/ILSDI_Services.t index 430d900c77..0e77f47fcb 100644 --- a/t/db_dependent/ILSDI_Services.t +++ b/t/db_dependent/ILSDI_Services.t @@ -19,13 +19,14 @@ use Modern::Perl; use CGI qw ( -utf8 ); -use Test::More tests => 9; +use Test::More tests => 10; use Test::MockModule; use t::lib::Mocks; use t::lib::TestBuilder; use C4::Items qw( ModItemTransfer ); use C4::Circulation; +use C4::Reserves; use Koha::AuthUtils; @@ -633,6 +634,66 @@ 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( $library->branchcode, + $patron->borrowernumber, + $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