Koha/t/db_dependent/rollingloans.t
David Gustafsson f726558510
Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm
Refactor the most performance critical subroutines in Circulation.pm
to take objects instead of unblessed ones to reduce unnecessary
unblessings and generally clean up the code.

To test:

1) Ensure the following tests all pass:
  t/db_dependent/Circulation.t
  t/db_dependent/Circulation/CalcDateDue.t
  t/db_dependent/Circulation/CheckIfIssuedToPatron.t
  t/db_dependent/Circulation/GetPendingOnSiteCheckouts.t
  t/db_dependent/Circulation/GetTopIssues.t
  t/db_dependent/Circulation/IsItemIssued.t
  t/db_dependent/Circulation/MarkIssueReturned.t
  t/db_dependent/Circulation/ReturnClaims.t
  t/db_dependent/Circulation/Returns.t
  t/db_dependent/Circulation/SwitchOnSiteCheckouts.t
  t/db_dependent/Circulation/TooMany.t
  t/db_dependent/Circulation/dateexpiry.t
  t/db_dependent/Circulation/issue.t
  t/db_dependent/Circulation/maxsuspensiondays.t
  t/db_dependent/Circulation/transferbook.t
  t/db_dependent/Circulation_holdsqueue.t
  t/db_dependent/DecreaseLoanHighHolds.t
  t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t
  t/db_dependent/Holds/RevertWaitingStatus.t
  t/db_dependent/ILSDI_Services.t
  t/db_dependent/Illrequests.t
  t/db_dependent/Koha/Account/Line.t
  t/db_dependent/Koha/Biblio.t
  t/db_dependent/Koha/Items.t
  t/db_dependent/Koha/Object.t
  t/db_dependent/Koha/Patrons.t
  t/db_dependent/Koha/Pseudonymization.t
  t/db_dependent/Koha/Template/Plugin/CirculationRules.t
  t/db_dependent/Letters/TemplateToolkit.t
  t/db_dependent/Members/GetAllIssues.t
  t/db_dependent/Members/IssueSlip.t
  t/db_dependent/Patron/Borrower_Discharge.t
  t/db_dependent/Patron/Borrower_PrevCheckout.t
  t/db_dependent/SIP/ILS.t
  t/db_dependent/Holds.t
  t/db_dependent/Holds/LocalHoldsPriority.t
  t/db_dependent/Holds/HoldFulfillmentPolicy.t
  t/db_dependent/Holds/HoldItemtypeLimit.t
  t/db_dependent/Reserves/GetReserveFee.t
  t/db_dependent/api/v1/return_claims.t
  t/db_dependent/api/v1/biblios.t
  t/db_dependent/api/v1/checkouts.t
  t/db_dependent/Reserves.t
  t/db_dependent/HoldsQueue.t
  t/db_dependent/selenium/regressions.t
  t/db_dependent/Koha/Plugins/Circulation_hooks.t
  t/db_dependent/Koha/Plugins/Recall_hooks.t
  t/db_dependent/Koha/Recalls.t
  t/db_dependent/Koha/Recall.t
  t/db_dependent/Circulation/_CalculateAndUpdateFine.t

Sponsored-by: Gothenburg University Library

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-09-22 10:52:39 -03:00

77 lines
2.3 KiB
Perl
Executable file

#!/usr/bin/perl
use Modern::Perl;
use C4::Context;
use C4::Circulation qw( CanBookBeIssued AddIssue AddReturn );
use C4::Members;
use C4::Items;
use Koha::DateUtils qw( dt_from_string );
use Koha::Libraries;
use Koha::Patrons;
use t::lib::TestBuilder;
use t::lib::Mocks qw(mock_preference);
use Test::More tests => 8;
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
my $builder = t::lib::TestBuilder->new;
$builder->build({ source => 'Branch', value => { branchcode => 'CPL' } })
unless Koha::Libraries->find('CPL');
t::lib::Mocks::mock_userenv({ branchcode => 'CPL' });
t::lib::Mocks::mock_preference('BlockReturnOfWithdrawnItems',0);
my $test_patron = '23529001223651';
my $test_item_fic = '502326000402';
my $test_item_24 = '502326000404';
my $test_item_48 = '502326000403';
my $borrower1 = $builder->build_object({ class => 'Koha::Patrons', value => { cardnumber => $test_patron } });
my $item1 = $builder->build_sample_item(
{
barcode => $test_item_fic,
}
);
my $item2 = $builder->build_sample_item(
{
barcode => $test_item_24,
}
);
my $item3 = $builder->build_sample_item(
{
barcode => $test_item_48,
}
);
SKIP: {
skip 'Missing test borrower or item, skipping tests', 8
unless ( defined $borrower1 && defined $item1 );
for my $item_barcode ( $test_item_fic, $test_item_24, $test_item_48 ) {
my $duedate = try_issue( $test_patron, $item_barcode );
isa_ok( $duedate, 'DateTime' );
if ( $item_barcode eq $test_item_fic ) {
is( $duedate->hour(), 23, "daily loan hours = 23" );
is( $duedate->minute(), 59, "daily loan mins = 59" );
}
my $ret_ok = try_return($item_barcode);
is( $ret_ok, 1, 'Return succeeded' );
}
}
sub try_issue {
my ($cardnumber, $item_barcode ) = @_;
my $issuedate = '2011-05-16';
my $patron = Koha::Patrons->find( { cardnumber => $cardnumber } );
my ($issuingimpossible,$needsconfirmation) = CanBookBeIssued( $patron, $item_barcode );
my $issue = AddIssue($patron, $item_barcode, undef, 0, $issuedate);
return dt_from_string( $issue->date_due );
}
sub try_return {
my $item_barcode = shift;
my ($ret, $messages, $iteminformation, $borrower) = AddReturn($item_barcode);
return $ret;
}