From 23e302071efabd824f0a6c69bc68dee4cfc13e5b Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Fri, 9 Aug 2013 17:40:54 +0000 Subject: [PATCH] bug 2394: regression test for canreservefromotherbranches If IndependentBranches is ON and canreservefromotherbranches is OFF, a patron is not permittedo to request an item whose homebranch (i.e., owner of the item) is different from the patron's own library. However, if canreservefromotherbranches is turned ON, the patron can create such hold requests. Note that canreservefromotherbranches has no effect if IndependentBranches is OFF. To test, run prove -v t/db_dependent/Holds.t. Without the bugfix patch for bug 2394, the last two tests should fail. Signed-off-by: Galen Charlton --- t/db_dependent/Holds.t | 53 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Holds.t b/t/db_dependent/Holds.t index 0f70872d6e..74cecfac35 100755 --- a/t/db_dependent/Holds.t +++ b/t/db_dependent/Holds.t @@ -2,9 +2,12 @@ use strict; use warnings; + +use t::lib::Mocks; +use C4::Context; use C4::Branch; -use Test::More tests => 19; +use Test::More tests => 22; use MARC::Record; use C4::Biblio; use C4::Items; @@ -164,6 +167,54 @@ AlterPriority( 'bottom', $reserve->{'reserve_id'} ); $reserve = GetReserve( $reserve->{'reserve_id'} ); ok( $reserve->{'priority'} eq '5', "Test AlterPriority(), move to bottom" ); +# Regression test for bug 2394 +# +# If IndependentBranches is ON and canreservefromotherbranches is OFF, +# a patron is not permittedo to request an item whose homebranch (i.e., +# owner of the item) is different from the patron's own library. +# However, if canreservefromotherbranches is turned ON, the patron can +# create such hold requests. +# +# Note that canreservefromotherbranches has no effect if +# IndependentBranches is OFF. + +my ($foreign_bibnum, $foreign_title, $foreign_bibitemnum) = create_helper_biblio(); +my ($foreign_item_bibnum, $foreign_item_bibitemnum, $foreign_itemnumber) + = AddItem({ homebranch => 'MPL', holdingbranch => 'MPL' } , $foreign_bibnum); +$dbh->do('DELETE FROM issuingrules'); +$dbh->do( + q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed) + VALUES (?, ?, ?, ?)}, + {}, + '*', '*', '*', 25 +); + +# make sure some basic sysprefs are set +t::lib::Mocks::mock_preference('ReservesControlBranch', 'homebranch'); +t::lib::Mocks::mock_preference('item-level_itypes', 1); + +# if IndependentBranches is OFF, a CPL patron can reserve an MPL item +t::lib::Mocks::mock_preference('IndependentBranches', 0); +ok( + CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), + 'CPL patron allowed to reserve MPL item with IndependentBranches OFF (bug 2394)' +); + +# if IndependentBranches is OFF, a CPL patron cannot reserve an MPL item +t::lib::Mocks::mock_preference('IndependentBranches', 1); +t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); +ok( + ! CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), + 'CPL patron NOT allowed to reserve MPL item with IndependentBranches ON ... (bug 2394)' +); + +# ... unless canreservefromotherbranches is ON +t::lib::Mocks::mock_preference('canreservefromotherbranches', 1); +ok( + CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), + '... unless canreservefromotherbranches is ON (bug 2394)' +); + # Helper method to set up a Biblio. sub create_helper_biblio { my $bib = MARC::Record->new(); -- 2.20.1