--- /dev/null
+#!/usr/bin/perl
+
+use Test::More tests => 15;
+
+BEGIN {
+ use_ok('C4::Circulation');
+}
+
+my $CircControl = C4::Context->preference('CircControl');
+my $HomeOrHoldingBranch = C4::Context->preference('HomeOrHoldingBranch');
+
+my $item = {
+ homebranch => 'ItemHomeBranch',
+ holdingbranch => 'ItemHoldingBranch'
+};
+
+my $borrower = {
+ branchcode => 'BorrowerBranch'
+};
+
+# No userenv, PickupLibrary
+C4::Context->set_preference('CircControl', 'PickupLibrary');
+is(
+ C4::Context->preference('CircControl'),
+ 'PickupLibrary',
+ 'CircControl changed to PickupLibrary'
+);
+is(
+ C4::Circulation::_GetCircControlBranch($item, $borrower),
+ $item->{$HomeOrHoldingBranch},
+ '_GetCircControlBranch returned item branch (no userenv defined)'
+);
+
+# No userenv, PatronLibrary
+C4::Context->set_preference('CircControl', 'PatronLibrary');
+is(
+ C4::Context->preference('CircControl'),
+ 'PatronLibrary',
+ 'CircControl changed to PatronLibrary'
+);
+is(
+ C4::Circulation::_GetCircControlBranch($item, $borrower),
+ $borrower->{branchcode},
+ '_GetCircControlBranch returned borrower branch'
+);
+
+# No userenv, ItemHomeLibrary
+C4::Context->set_preference('CircControl', 'ItemHomeLibrary');
+is(
+ C4::Context->preference('CircControl'),
+ 'ItemHomeLibrary',
+ 'CircControl changed to ItemHomeLibrary'
+);
+is(
+ $item->{$HomeOrHoldingBranch},
+ C4::Circulation::_GetCircControlBranch($item, $borrower),
+ '_GetCircControlBranch returned item branch'
+);
+
+diag('Now, set a userenv');
+C4::Context->_new_userenv('xxx');
+C4::Context::set_userenv(0,0,0,'firstname','surname', 'CurrentBranch', 'CurrentBranchName', '', '', '');
+is(C4::Context->userenv->{branch}, 'CurrentBranch', 'userenv set');
+
+# Userenv set, PickupLibrary
+C4::Context->set_preference('CircControl', 'PickupLibrary');
+is(
+ C4::Context->preference('CircControl'),
+ 'PickupLibrary',
+ 'CircControl changed to PickupLibrary'
+);
+is(
+ C4::Circulation::_GetCircControlBranch($item, $borrower),
+ 'CurrentBranch',
+ '_GetCircControlBranch returned current branch'
+);
+
+# Userenv set, PatronLibrary
+C4::Context->set_preference('CircControl', 'PatronLibrary');
+is(
+ C4::Context->preference('CircControl'),
+ 'PatronLibrary',
+ 'CircControl changed to PatronLibrary'
+);
+is(
+ C4::Circulation::_GetCircControlBranch($item, $borrower),
+ $borrower->{branchcode},
+ '_GetCircControlBranch returned borrower branch'
+);
+
+# Userenv set, ItemHomeLibrary
+C4::Context->set_preference('CircControl', 'ItemHomeLibrary');
+is(
+ C4::Context->preference('CircControl'),
+ 'ItemHomeLibrary',
+ 'CircControl changed to ItemHomeLibrary'
+);
+is(
+ C4::Circulation::_GetCircControlBranch($item, $borrower),
+ $item->{$HomeOrHoldingBranch},
+ '_GetCircControlBranch returned item branch'
+);
+
+# Reset initial configuration
+C4::Context->set_preference('CircControl', $CircControl);
+is(
+ C4::Context->preference('CircControl'),
+ $CircControl,
+ 'CircControl reset to its initial value'
+);