Bug 32934: Unit tests

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 04ab86f1f7)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
This commit is contained in:
Martin Renvoize 2025-07-08 12:53:16 +01:00 committed by Paul Derscheid
parent 3fd87e0ddd
commit ecdcdcfb75
No known key found for this signature in database
GPG Key ID: C25F9FD44CED595B
2 changed files with 72 additions and 11 deletions

View File

@ -18,7 +18,7 @@
use Modern::Perl;
use Test::NoWarnings;
use Test::More tests => 3;
use Test::More tests => 4;
use Test::MockModule;
use Test::Warn;
@ -85,18 +85,21 @@ subtest "Bug 34529: Offline circulation should be able to accept userid as well
}
);
my ( $message, $checkout ) = ProcessOfflineIssue(
{
cardnumber => $borrower1->{cardnumber},
barcode => $item1->barcode
}
);
is(
ProcessOfflineIssue(
{
cardnumber => $borrower1->{cardnumber},
barcode => $item1->barcode
}
),
"Success.",
$message, "Success.",
"ProcessOfflineIssue succeeds with cardnumber"
);
( $message, $checkout ) = ProcessOfflineIssue( { cardnumber => $borrower1->{userid}, barcode => $item2->barcode } );
is(
ProcessOfflineIssue( { cardnumber => $borrower1->{userid}, barcode => $item2->barcode } ),
$message,
"Success.",
"ProcessOfflineIssue succeeds with user id"
);
@ -192,9 +195,48 @@ subtest "Bug 30114 - Koha offline circulation will always cancel the next hold w
my $op = GetOfflineOperation( $offline_rs->next->id );
my $ret = ProcessOfflineOperation($op);
my ($ret) = ProcessOfflineOperation($op);
is( Koha::Holds->search( { biblionumber => $biblionumber } )->count, 2, "Still found two holds for the record" );
};
subtest "Bug 32934: ProcessOfflineIssue returns checkout object for SIP no block due date" => sub {
plan tests => 4;
$branch = $builder->build( { source => 'Branch' } )->{branchcode};
$manager_id = $builder->build( { source => 'Borrower' } )->{borrowernumber};
my $borrower = $builder->build(
{
source => 'Borrower',
value => { branchcode => $branch }
}
);
my $biblio = $builder->build_sample_biblio;
my $item = $builder->build_sample_item(
{
biblionumber => $biblio->id,
library => $branch,
}
);
my $due_date = dt_from_string->add( days => 7 )->ymd;
# Test ProcessOfflineIssue returns both message and checkout object
my ( $message, $checkout ) = ProcessOfflineIssue(
{
cardnumber => $borrower->{cardnumber},
barcode => $item->barcode,
due_date => $due_date,
timestamp => dt_from_string
}
);
is( $message, "Success.", "ProcessOfflineIssue returns success message" );
isa_ok( $checkout, 'Koha::Checkout', "ProcessOfflineIssue returns checkout object" );
is( $checkout->borrowernumber, $borrower->{borrowernumber}, "Checkout has correct borrower" );
is( dt_from_string( $checkout->date_due )->ymd, $due_date, "Checkout respects specified due_date" );
};
$schema->storage->txn_rollback;

View File

@ -983,7 +983,7 @@ subtest do_checkout_with_patron_blocked => sub {
};
subtest do_checkout_with_noblock => sub {
plan tests => 1;
plan tests => 3;
my $mockILS = Test::MockObject->new;
my $server = { ils => $mockILS };
@ -1033,6 +1033,25 @@ subtest do_checkout_with_noblock => sub {
$patron->checkouts->count,
1, 'No Block checkout was performed for debarred patron'
);
# Test Bug 32934: SIP checkout with no_block_due_date should honor the specified due date
$sip_patron = C4::SIP::ILS::Patron->new( $patron->cardnumber );
my $sip_item_2 = C4::SIP::ILS::Item->new( $item->barcode );
my $transaction = C4::SIP::ILS::Transaction::Checkout->new();
$transaction->patron($sip_patron);
$transaction->item($sip_item_2);
# Set no_block_due_date to test the fix (YYYYMMDDZZZZHHMMSS)
my $expected_due_date = '20250115 000000';
my $checkout_result = $transaction->do_checkout( undef, $expected_due_date );
my $checkout_obj = $patron->checkouts->find( { itemnumber => $item->itemnumber } );
isnt( $checkout_obj, undef, 'Checkout object exists after no block checkout' );
like(
dt_from_string( $checkout_obj->date_due )->ymd(''), qr/^20250115/,
'No block due date is honored in SIP checkout'
);
};
subtest do_checkout_with_holds => sub {