From 2ea70c7ff7a0d04690e2c9aecc932228b23ca441 Mon Sep 17 00:00:00 2001 From: Baptiste Wojtkowski Date: Wed, 13 Aug 2025 11:53:19 +0200 Subject: [PATCH] Bug 37344: Update test suite --- t/db_dependent/Patron/Borrower_Discharge.t | 118 ++++++++++++++++++++- 1 file changed, 115 insertions(+), 3 deletions(-) diff --git a/t/db_dependent/Patron/Borrower_Discharge.t b/t/db_dependent/Patron/Borrower_Discharge.t index 0f42c5cad..a4e15dccf 100755 --- a/t/db_dependent/Patron/Borrower_Discharge.t +++ b/t/db_dependent/Patron/Borrower_Discharge.t @@ -16,11 +16,12 @@ use Modern::Perl; -use Test::More tests => 33; +use Test::More tests => 43; use Test::NoWarnings; use Test::MockModule; use Test::Warn; +use Try::Tiny; use IPC::Cmd qw(can_run); use MARC::Record; @@ -32,6 +33,7 @@ use C4::Context; use Koha::Patrons; use Koha::Patron::Discharge; use Koha::Database; +use Koha::DateUtils qw( dt_from_string ); use t::lib::TestBuilder; use t::lib::Mocks; @@ -170,13 +172,123 @@ is( scalar( Koha::Patron::Discharge::get_validated( { branchcode => $library->{branchcode} } ) ), 2, 'There is 2 validated discharges for a given branchcode' ); # This is not used in the code yet -Koha::Patron::Debarments::DelUniqueDebarment( { 'borrowernumber' => $patron->borrowernumber, 'type' => 'DISCHARGE' } ); + +my $discharge = Koha::Patron::Discharge::get_validated( + { + branchcode => $library->{branchcode}, + borrowernumber => $patron->borrowernumber, + } +)->single; + +Koha::Patron::Discharge::cancel( + { + discharge_id => $discharge->discharge_id, + cancellation_reason => 'PATRON_MISTAKE', + } +); + +$discharge = Koha::Patron::Discharge::get_validated( + { + branchcode => $library->{branchcode}, + borrowernumber => $patron->borrowernumber, + } +)->single; + +Koha::Patron::Discharge::cancel( + { + borrowernumber => $patron2->borrowernumber, + cancellation_reason => 'PATRON_MISTAKE', + } +); + +my $discharge2 = Koha::Patron::Discharge::get_validated( + { + branchcode => $library->{branchcode}, + borrowernumber => $patron2->borrowernumber, + } +)->single; + ok( !Koha::Patrons->find( $patron->borrowernumber )->is_debarred, 'The debarment has been lifted' ); ok( !Koha::Patron::Discharge::is_discharged( { borrowernumber => $patron->borrowernumber } ), - 'The patron is not discharged after the restriction has been lifted' + 'The patron is not discharged after the discharge has been cancelled' +); + +ok( + Koha::Patron::Discharge::is_cancelled( { discharge_id => $discharge->discharge_id } ), + 'The discharge is marked as cancelled after the discharge has been cancelled using dischargeid' +); + +ok( + Koha::Patron::Discharge::is_cancelled( { discharge_id => $discharge2->discharge_id } ), + 'The discharge is marked as cancelled after the discharge has been cancelled using borrowernumber' +); + +is( + $discharge->cancellation_reason, + 'PATRON_MISTAKE', + 'The cancellation reason is properly set using discharge_id' ); +is( + dt_from_string( $discharge->cancelled )->ymd, + dt_from_string->ymd, + 'The cancellation date is properly set using discharge_id' +); + +is( + $discharge2->cancellation_reason, + 'PATRON_MISTAKE', + 'The cancellation reason is properly set using borrowernumber' +); + +is( + dt_from_string( $discharge2->cancelled )->ymd, + dt_from_string->ymd, + 'The cancellation date is properly set using borrowernumber' +); + +try { + Koha::Patron::Discharge::cancel( + { + cancellation_reason => 'PATRON_MISTAKE', + } + ); + ok( 0, 'Cancel must be called with one parameter' ); +} catch { + ok( $_->isa('Koha::Exceptions::BadParameter'), "Cancel must be called with one parameter" ); +}; + +try { + Koha::Patron::Discharge::cancel( + { + discharge_id => $discharge->discharge_id, + borrowernumber => $patron2->borrowernumber, + } + ); + ok( 0, 'Discharge and borrowernumber, if both provided, must fit' ); +} catch { + ok( $_->isa('Koha::Exceptions::BadParameter'), "Discharge and borrowernumber, if both provided, must fit" ); +}; + +try { + Koha::Patron::Discharge::is_cancelled( {} ); + ok( 0, 'There must be a discharge_id in parameters to is_cancelled' ); +} catch { + ok( $_->isa('Koha::Exceptions::BadParameter'), "There must be a discharge_id in parameters to is_cancelled" ); +}; + +try { + Koha::Patron::Discharge::is_cancelled( + { + discharge_id => -1, + } + ); + ok( 0, 'Discharge called in is_cancelled must exist' ); +} catch { + ok( $_->isa('Koha::Exceptions::BadParameter'), "Discharge called in is_cancelled must exist" ); +}; + # Verify that the discharge works multiple times Koha::Patron::Discharge::request( { borrowernumber => $patron->borrowernumber } ); is( scalar(Koha::Patron::Discharge::get_pendings), 1, 'There is a pending discharge request (second time)' ); -- 2.30.2