f726558510
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>
77 lines
2.3 KiB
Perl
Executable file
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;
|
|
}
|