From cb2175b03ee14684d19e5086c22a0df316508225 Mon Sep 17 00:00:00 2001
From: Hammat Wele <hammat.wele@inlibro.com>
Date: Wed, 29 Mar 2023 13:43:28 +0000
Subject: [PATCH] Bug 33200: (follow-up) Adding Unit test, renaming
 _Removereserve

---
 C4/Reserves.pm            |  8 ++++----
 t/db_dependent/Reserves.t | 16 +++++++++++++++-
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/C4/Reserves.pm b/C4/Reserves.pm
index 75395cd4d4..8e407b4d1a 100644
--- a/C4/Reserves.pm
+++ b/C4/Reserves.pm
@@ -1788,19 +1788,19 @@ sub _Findgroupreserve {
     return @results;
 }
 
-=head2 _Removereserve
+=head2 _FilterHoldsForIndependentBranches
 
-  @reserves = &_Removereserve( @reserves );
+  @reserves = &_FilterHoldsForIndependentBranches( @reserves );
 
 Check transfers is allowed from system preference and remove the reserves made from other branches
 
-C<&_Removereserve> returns :
+C<&_FilterHoldsForIndependentBranches> returns :
 C<@results> is an array of references-to-hash whose keys are mostly
 fields from the reserves table of the Koha database, plus
 
 =cut
 
-sub _Removereserve {
+sub _FilterHoldsForIndependentBranches {
     my ( @reserves) = @_;
     if ( C4::Context->preference("IndependentBranchesTransfers") && !C4::Context->IsSuperLibrarian() && scalar @reserves) {
         my @results;
diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t
index 2a6ed48120..bc6a7e3b26 100755
--- a/t/db_dependent/Reserves.t
+++ b/t/db_dependent/Reserves.t
@@ -17,7 +17,7 @@
 
 use Modern::Perl;
 
-use Test::More tests => 78;
+use Test::More tests => 80;
 use Test::MockModule;
 use Test::Warn;
 
@@ -62,6 +62,7 @@ my $frameworkcode = q//;
 
 
 t::lib::Mocks::mock_preference('ReservesNeedReturns', 1);
+t::lib::Mocks::mock_preference( 'IndependentBranchesTransfers', 0 );
 
 # Somewhat arbitrary field chosen for age restriction unit tests. Must be added to db before the framework is cached
 $dbh->do("update marc_subfield_structure set kohafield='biblioitems.agerestriction' where tagfield='521' and tagsubfield='a' and frameworkcode=?", undef, $frameworkcode);
@@ -129,6 +130,19 @@ ok(exists($reserve->{reserve_id}), 'CheckReserves() include reserve_id in its re
 ($status, $reserve, $all_reserves) = CheckReserves( $item );
 is($status, "Reserved", "CheckReserves Test 2");
 
+# Set the preference 'IndependentBranchesTransfers' is set to 'yes'
+# the userenv branch and the branche code are not the same holds should be filtered
+t::lib::Mocks::mock_preference( 'IndependentBranchesTransfers', 1 );
+($status, $reserve, $all_reserves) = CheckReserves( $item );
+is( $status, "", 'Reserves is filtered');
+
+# Set the userenv branchcode to be the same to the item branchcode.
+t::lib::Mocks::mock_userenv({ branchcode => $branchcode });
+($status, $reserve, $all_reserves) = CheckReserves( $item );
+is( $status, "Reserved", 'Reserves should not be filtered');
+
+t::lib::Mocks::mock_userenv({ branchcode => $branch_1 });
+t::lib::Mocks::mock_preference( 'IndependentBranchesTransfers', 0 );
 my $ReservesControlBranch = C4::Context->preference('ReservesControlBranch');
 t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'ItemHomeLibrary' );
 ok(
-- 
2.34.1