Bug 6137: unit tests for C4::Circulation::_GetCircControlBranch
authorJulian Maurice <julian.maurice@biblibre.com>
Fri, 27 Jan 2012 14:59:36 +0000 (15:59 +0100)
committerPaul Poulain <paul.poulain@biblibre.com>
Fri, 17 Feb 2012 17:38:43 +0000 (18:38 +0100)
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
t/Circulation.t [new file with mode: 0755]

diff --git a/t/Circulation.t b/t/Circulation.t
new file mode 100755 (executable)
index 0000000..8fab844
--- /dev/null
@@ -0,0 +1,110 @@
+#!/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'
+);