From 35f8029bc82401bc024110c69a7a55d4de7e9c36 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Mon, 8 Mar 2021 14:59:06 +0000 Subject: [PATCH] Bug 27281: (follow-up) Clean up LostItem test The LostItem test was rather messy, and wasn't actually testing much in reality. This patch cleans it up and adds testing for transfer queue handling of ListItem cancellations. Test plan 1/ Confirm t/db_dependent/Circulation.t still passes 2/ Read the tests before and after and confirm that they test what is required. 3/ Signoff https://bugs.koha-community.org/show_bug.cgi?id=24295 --- t/db_dependent/Circulation.t | 97 ++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 43 deletions(-) diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t index d0bfe6e207..6f37ccfc94 100755 --- a/t/db_dependent/Circulation.t +++ b/t/db_dependent/Circulation.t @@ -3389,57 +3389,68 @@ subtest 'Set waiting flag' => sub { }; subtest 'Cancel transfers on lost items' => sub { - plan tests => 6; - my $library_1 = $builder->build( { source => 'Branch' } ); - my $patron_1 = $builder->build( { source => 'Borrower', value => { branchcode => $library_1->{branchcode}, categorycode => $patron_category->{categorycode} } } ); - my $library_2 = $builder->build( { source => 'Branch' } ); - my $patron_2 = $builder->build( { source => 'Borrower', value => { branchcode => $library_2->{branchcode}, categorycode => $patron_category->{categorycode} } } ); - my $biblio = $builder->build_sample_biblio({branchcode => $library->{branchcode}}); - my $item = $builder->build_sample_item({ - biblionumber => $biblio->biblionumber, - library => $library_1->{branchcode}, - }); + plan tests => 5; - set_userenv( $library_2 ); - my $reserve_id = AddReserve( + my $library_to = $builder->build_object( { class => 'Koha::Libraries' } ); + my $item = $builder->build_sample_item(); + my $old_transfer = $builder->build_object( { - branchcode => $library_2->{branchcode}, - borrowernumber => $patron_2->{borrowernumber}, - biblionumber => $item->biblionumber, - priority => 1, - itemnumber => $item->itemnumber, + class => 'Koha::Item::Transfers', + value => { + itemnumber => $item->itemnumber, + frombranch => $item->holdingbranch, + tobranch => $library_to->branchcode, + reason => 'Manual', + datesent => \'NOW()', + datearrived => \'NOW()', + datecancelled => undef, + daterequested => \'NOW()' + } + } + ); + my $transfer_1 = $builder->build_object( + { + class => 'Koha::Item::Transfers', + value => { + itemnumber => $item->itemnumber, + frombranch => $item->holdingbranch, + tobranch => $library_to->branchcode, + reason => 'Manual', + datesent => undef, + datearrived => undef, + datecancelled => undef, + daterequested => \'NOW()' + } + } + ); + my $transfer_2 = $builder->build_object( + { + class => 'Koha::Item::Transfers', + value => { + itemnumber => $item->itemnumber, + frombranch => $item->holdingbranch, + tobranch => $library_to->branchcode, + reason => 'Manual', + datesent => \'NOW()', + datearrived => undef, + datecancelled => undef, + daterequested => \'NOW()' + } } ); - #Return book and add transfer - set_userenv( $library_1 ); - my $do_transfer = 1; - my ( $res, $rr ) = AddReturn( $item->barcode, $library_1->{branchcode} ); - ModReserveAffect( $item->itemnumber, undef, $do_transfer, $reserve_id ); - C4::Circulation::transferbook({ - from_branch => $library_1->{branchcode}, - to_branch => $library_2->{branchcode}, - barcode => $item->barcode, - trigger => 'Reserve', - }); - my $hold = Koha::Holds->find( $reserve_id ); - is( $hold->found, 'T', 'Hold is in transit' ); - - #Check transfer exists and the items holding branch is the transfer destination branch before marking it as lost - my ($datesent,$frombranch,$tobranch) = GetTransfers($item->itemnumber); - is( $frombranch, $library_1->{branchcode}, 'The transfer is generated from the correct library'); - is( $tobranch, $library_2->{branchcode}, 'The transfer is generated to the correct library'); - my $itemcheck = Koha::Items->find($item->itemnumber); - is( $itemcheck->holdingbranch, $library_1->{branchcode}, 'Items holding branch is the transfers origination branch before it is marked as lost' ); - - #Simulate item being marked as lost and confirm the transfer is deleted and the items holding branch is the transfers source branch + # Simulate item being marked as lost $item->itemlost(1)->store; LostItem( $item->itemnumber, 'test', 1 ); - ($datesent,$frombranch,$tobranch) = GetTransfers($item->itemnumber); - is( $tobranch, undef, 'The transfer on the lost item has been deleted as the LostItemCancelOutstandingTransfer is enabled'); - $itemcheck = Koha::Items->find($item->itemnumber); - is( $itemcheck->holdingbranch, $library_1->{branchcode}, 'Lost item with cancelled hold has holding branch equallying the transfers source branch' ); + $transfer_1->discard_changes; + isnt($transfer_1->datecancelled, undef, "Queud transfer was cancelled upon item lost"); + is($transfer_1->cancellation_reason, 'ItemLost', "Cancellation reason was set to 'ItemLost'"); + $transfer_2->discard_changes; + isnt($transfer_2->datecancelled, undef, "Active transfer was cancelled upon item lost"); + is($transfer_2->cancellation_reason, 'ItemLost', "Cancellation reason was set to 'ItemLost'"); + $old_transfer->discard_changes; + is($old_transfer->datecancelled, undef, "Old transfers are unaffected"); }; subtest 'CanBookBeIssued | is_overdue' => sub { -- 2.20.1