Bugzilla – Attachment 175695 Details for
Bug 7376
Transfer limits should be checked at check-in
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Subject: [PATCH] Bug 7376: Clarify tests further
Subject-PATCH-Bug-7376-Clarify-tests-further.patch (text/plain), 14.32 KB, created by
Baptiste Wojtkowski (bwoj)
on 2024-12-19 10:51:14 UTC
(
hide
)
Description:
Subject: [PATCH] Bug 7376: Clarify tests further
Filename:
MIME Type:
Creator:
Baptiste Wojtkowski (bwoj)
Created:
2024-12-19 10:51:14 UTC
Size:
14.32 KB
patch
obsolete
>From 5b3504b5d80d52c8e5b2060d3fdfab044345ef63 Mon Sep 17 00:00:00 2001 >From: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com> >Date: Mon, 16 Dec 2024 15:20:04 +0100 >Subject: [PATCH] Subject: [PATCH] Bug 7376: Clarify tests further > >We want to prevent returns where the item cannot be transfered 'back to >where it came from (be that Homebranch or Holdingbranch as defined >respectively in the circulation rules). > >This patch clarifies the tests further by testing this transfer >functionality distinctly from the 'AllowReturnToBranch' preference >functionality. > >Signed-off-by: Julian Maurice <julian.maurice@biblibre.com> >--- > t/db_dependent/Circulation.t | 166 ++++++++++------------------------- > 1 file changed, 46 insertions(+), 120 deletions(-) > >diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t >index 725a73d0..cce67e4f 100755 >--- a/t/db_dependent/Circulation.t >+++ b/t/db_dependent/Circulation.t >@@ -2601,8 +2601,8 @@ subtest 'CanBookBeIssued + Koha::Patron->is_debarred|has_overdues' => sub { > }; > > >-subtest 'CanBookBeReturned + UseBranchTransfertLimits' => sub { >- plan tests => 33; >+subtest 'CanBookBeReturned + UseBranchTransfertLimits + CirculationRules' => sub { >+ plan tests => 22; > t::lib::Mocks::mock_preference( 'UseBranchTransferLimits', '1' ); > > my $homebranch = $builder->build( { source => 'Branch' } ); >@@ -2621,131 +2621,72 @@ subtest 'CanBookBeReturned + UseBranchTransfertLimits' => sub { > set_userenv($holdingbranch); > my $issue = AddIssue( $patron, $item->barcode ); > >- # 'Anywhere' + BranchTransferLimits >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >- >- # Attempt return at returnbranch (No limits defined) >- my ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 1 , $allowed , 'with AllowReturnToBranch = anywhere and no limits return to returnbranch is allowed'); >- is ( undef , $message , 'without limits provides no message'); >- >- # Set limit (Holding -> Return denied) >- t::lib::Mocks::mock_preference( 'BranchTransferLimitsType', 'itemtype' ); >- my $limit = Koha::Item::Transfer::Limit->new({ >- toBranch => $returnbranch->{branchcode}, >- fromBranch => $holdingbranch->{branchcode}, >- itemtype => $item->effective_itemtype, >- })->store(); >- >- diag("Attempt return at returnbranch ('Homebranch' + Holding -> Return limit)"); >+ # Attempt returns at returnbranch > t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homebranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >+ my ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}); > is ( 0 , $allowed , 'Prevent return where returnbranch != homebranch'); > is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); > >- diag("Attempt return at returnbranch ('Holdingbranch' + Holding -> Return limit)"); > t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'holdingbranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}); > is ( 0 , $allowed , 'Prevent return where returnbranch != holdingbranch'); > is ( $holdingbranch->{branchcode} , $message , 'Redirect to holdingbranch'); > >- diag("Attempt return at returnbranch ('Home Or Holding' + Holding -> Return limit)"); > t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homeorholdingbranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}); > is ( 0 , $allowed , 'Prevent return where returnbranch != homebranch or holdingbranch'); > is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); > >- diag("Attempt return at returnbranch ('Anywhere' + Holding -> Return limit)"); >- # NOTE: This prevents receiving an item from a branch that is listed in >- # the branchtransferlimits as not allowed to send to our returnbranch. > t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch has a branchtransfer limit from holdingbranch'); >- is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); >- >- # Set limit ( Return -> Home denied) >- $limit->set( >- { >- toBranch => $homebranch->{branchcode}, >- fromBranch => $returnbranch->{branchcode} >- } >- )->store()->discard_changes; >- >- diag("Attempt return at returnbranch ('Homebranch' + Return -> Home limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homebranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != homebranch'); >- is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); >- >- diag("Attempt return at returnbranch ('Holdingbranch' + Return -> Home limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'holdingbranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != holdingbranch'); >- is ( $holdingbranch->{branchcode} , $message , 'Redirect to holdingbranch'); >- >- diag("Attempt return at returnbranch ('Home Or Holding' + Return -> Home limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homeorholdingbranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != homebranch or holdingbranch'); >- is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); >- >- diag("Attempt return at returnbranch ('Anywhere' + Return -> Home limit)"); >- # NOTE: Should we prevent return here.. we cannot transfer from 'returnbranch' >- # to 'homebranch' (But we can transfer back to 'holdingbranch'). >- # NOTE: This is the ONLY change that bug 7376 introduces currently. >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 1 , $allowed , 'Allow return where returnbranch can be transfered to holding (homebranch forbidden) from returnbranch'); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}); >+ is ( 1 , $allowed , 'with AllowReturnToBranch = anywhere and no limits return to returnbranch is allowed'); >+ is ( undef , $message , 'without limits provides no message'); > >- my $limit_2 = Koha::Item::Transfer::Limit->new({ >- toBranch => $holdingbranch->{branchcode}, >- fromBranch => $returnbranch->{branchcode}, >+ # Set limit (Holding -> Return denied) >+ diag("Transfer limit: Holding -> Return"); >+ t::lib::Mocks::mock_preference( 'BranchTransferLimitsType', 'itemtype' ); >+ my $limit = Koha::Item::Transfer::Limit->new({ >+ toBranch => $returnbranch->{branchcode}, >+ fromBranch => $holdingbranch->{branchcode}, > itemtype => $item->effective_itemtype, > })->store(); > >- diag("Attempt return at returnbranch ('Anywhere' + Return -> Home and Return -> Holding limit)"); >- # NOTE: Should we prevent return here.. we cannot transfer from 'returnbranch' >- # to 'homebranch' (But we can transfer back to 'holdingbranch'). >- # NOTE: This is the ONLY change that bug 7376 introduces currently. > t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where item can\'t be transferred to both homebranch and holding from returnbranch'); >- is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}); >+ is ( 1 , $allowed , 'Allow return where transferbranch is not passed'); >+ is ( undef , $message , 'without limits provides no message'); >+ >+ t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}, $homebranch->{branchcode}); >+ is ( 1 , $allowed , 'Allow return where there is no transfer limit between returnbranch and homebranch'); >+ is ( undef , $message , 'without limits provides no message'); > >- $limit_2->delete()->store()->discard_changes; >+ t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}, $holdingbranch->{branchcode}); >+ is ( 1 , $allowed , 'Allow return where there is no transfer limit between returnbranch and holdingbranch'); >+ is ( undef , $message , 'without limits provides no message'); > >- # Set limit ( Return -> Holding denied) >+ # Set limit ( Return -> Home denied) >+ diag("Transfer limit: Return -> Home"); > $limit->set( > { >- toBranch => $holdingbranch->{branchcode}, >+ toBranch => $homebranch->{branchcode}, > fromBranch => $returnbranch->{branchcode} > } > )->store()->discard_changes; > >- diag("Attempt return at returnbranch ('Homebranch' + Return -> Holding limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homebranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != homebranch'); >- is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); >- >- diag("Attempt return at returnbranch ('Holdingbranch' + Return -> Holding limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'holdingbranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != holdingbranch'); >- is ( $holdingbranch->{branchcode} , $message , 'Redirect to holdingbranch'); >- >- diag("Attempt return at returnbranch ('Home Or Holding' + Return -> Holding limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homeorholdingbranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != homebranch or holdingbranch'); >+ t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}, $homebranch->{branchcode}); >+ is ( 0 , $allowed , 'Prevent return where returnbranch cannot transfer to homebranch'); > is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); > >- diag("Attempt return at returnbranch ('Anywhere' + Return -> Holding limit)"); >- # NOTE: Should we prevent return here.. we cannot transfer from 'returnbranch' >- # to 'holdingbranch' (But we can transfer back to 'homebranch'). > t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 1 , $allowed , 'Allow return where returnbranch can be transferred to homebranch (holdingbranch forbidden) from returnbranch'); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}, $holdingbranch->{branchcode}); >+ is ( 1 , $allowed , 'Allow return where there is no transfer limit between returnbranch and holdingbranch'); >+ is ( undef , $message , 'without limits provides no message'); >+ >+ # Set limit ( Return -> Holding denied) >+ diag("Transfer limit: Return -> Holding"); > > # Set limit ( Holding -> Home denied) > $limit->set( >@@ -2755,30 +2696,15 @@ subtest 'CanBookBeReturned + UseBranchTransfertLimits' => sub { > } > )->store()->discard_changes; > >- diag("Attempt return at returnbranch ('Homebranch' + Holding -> Home limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homebranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != homebranch'); >- is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); >- >- diag("Attempt return at returnbranch ('Holdingbranch' + Holding -> Home limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'holdingbranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != holdingbranch'); >- is ( $holdingbranch->{branchcode} , $message , 'Redirect to holdingbranch'); >- >- diag("Attempt return at returnbranch ('Home Or Holding' + Holding -> Home limit)"); >- t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homeorholdingbranch' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 0 , $allowed , 'Prevent return where returnbranch != homebranch or holdingbranch'); >- is ( $homebranch->{branchcode} , $message , 'Redirect to homebranch'); >+ t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}, $homebranch->{branchcode}); >+ is ( 1 , $allowed , 'Allow return where there is no transfer limit between returnbranch and homebranch'); >+ is ( undef , $message , 'without limits provides no message'); > >- diag("Attempt return at returnbranch ('Anywhere' + Holding -> Home limit)"); >- # NOTE: A return here can subsequently be transferred to back to homebranch >- # or holdingbranch. > t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); >- ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch); >- is ( 1 , $allowed , 'Allow return where returnbranch can be transferred to from anywhere'); >+ ($allowed, $message) = C4::Circulation::CanBookBeReturned($item, $returnbranch->{branchcode}, $holdingbranch->{branchcode}); >+ is ( 0 , $allowed , 'Prevent return where returnbranch cannot transfer to holdingbranch'); >+ is ( $holdingbranch->{branchcode} , $message , 'Redirect to holdingbranch'); > }; > > >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 7376
:
6954
|
21715
|
21805
|
22016
|
22017
|
22323
|
22357
|
22696
|
23168
|
76559
|
76866
|
76876
|
92740
|
92774
|
93190
|
93191
|
93192
|
93193
|
93194
|
93195
|
93196
|
107077
|
107078
|
107079
|
115369
|
115370
|
116493
|
116494
|
116927
|
116928
|
116937
|
116938
|
120897
|
120898
|
120899
|
120900
|
120901
|
120902
|
120903
|
144435
|
144436
|
144437
|
144438
|
144439
|
144440
|
144441
|
175690
|
175691
|
175692
|
175693
|
175694
|
175695
|
175696
|
175697
|
180069
|
180070
|
180071
|
180072
|
180073
|
180074
|
180075
|
180076
|
180590
|
180591
|
180592
|
180593
|
180594
|
180595
|
180596
|
180597
|
181055
|
181056
|
181057
|
181058
|
181059
|
181060
|
181061
|
181062
|
181064
|
181065
|
181066
|
181067
|
181068
|
181069
|
181070
|
181071