Bug 17600: Standardize our EXPORT_OK
[srvgit] / t / Budgets / CanUserModifyBudget.t
old mode 100644 (file)
new mode 100755 (executable)
index e75a622..b2c8454
@@ -1,14 +1,14 @@
 #!/usr/bin/perl
 
 use Modern::Perl;
-use Test::More tests => 133;
+use Test::More tests => 134;
 
-use C4::Budgets;
+use C4::Budgets qw( GetBudget GetBudgetUsers CanUserModifyBudget );
+use t::lib::Mocks;
 
 # Avoid "redefined subroutine" warnings
 local $SIG{__WARN__} = sub { warn $_[0] unless $_[0] =~ /redefined/ };
 *C4::Budgets::GetBudgetUsers = \&Mock_GetBudgetUsers;
-*C4::Context::userenv = \&Mock_userenv;
 
 my %budgetusers = (
     1 => [],
@@ -133,8 +133,7 @@ my $budget16 = {
     budget_branchcode => 'B1',
 };
 
-my $userenv = {};
-
+ok( !CanUserModifyBudget( 0, undef, {} ), "CanUserModifyBudget evaluates to false if DB user is passed" );
 
 ok (CanUserModifyBudget($borrower1, $budget1, {superlibrarian => 1}));
 ok (CanUserModifyBudget($borrower1, $budget1, {
@@ -149,7 +148,7 @@ ok (!CanUserModifyBudget($borrower1, $budget1, {acquisition => 0}));
 
 my $flags = {acquisition => {budget_modify => 1}};
 
-$userenv->{branch} = 'B1';
+t::lib::Mocks::mock_userenv({ branchcode => 'B1' });
 
 # Restriction is 'none'
 ok (CanUserModifyBudget($borrower1, $budget1, $flags));
@@ -182,17 +181,16 @@ ok (CanUserModifyBudget($borrower2, $budget11, $flags));
 ok (CanUserModifyBudget($borrower2, $budget12, $flags));
 
 # Restriction is 'owner and users'
-ok (CanUserModifyBudget($borrower1, $budget13, $flags));
+ok (!CanUserModifyBudget($borrower1, $budget13, $flags)); # no owner, no user
 ok (CanUserModifyBudget($borrower1, $budget14, $flags));
 ok (CanUserModifyBudget($borrower1, $budget15, $flags));
 ok (CanUserModifyBudget($borrower1, $budget16, $flags));
-ok (CanUserModifyBudget($borrower2, $budget13, $flags));
-ok (CanUserModifyBudget($borrower2, $budget14, $flags));
+ok (!CanUserModifyBudget($borrower2, $budget13, $flags)); # no owner, no user
+ok (!CanUserModifyBudget($borrower2, $budget14, $flags)); # No owner and user list contains borrower1
 ok (CanUserModifyBudget($borrower2, $budget15, $flags));
 ok (!CanUserModifyBudget($borrower2, $budget16, $flags));
 
-
-$userenv->{branch} = 'B2';
+t::lib::Mocks::mock_userenv({ branchcode => 'B2' });
 
 # Restriction is 'none'
 ok (CanUserModifyBudget($borrower1, $budget1, $flags));
@@ -220,17 +218,17 @@ ok (CanUserModifyBudget($borrower1, $budget10, $flags));
 ok (CanUserModifyBudget($borrower1, $budget11, $flags));
 ok (CanUserModifyBudget($borrower1, $budget12, $flags));
 ok (CanUserModifyBudget($borrower2, $budget9, $flags));
-ok (CanUserModifyBudget($borrower2, $budget10, $flags));
+ok (!CanUserModifyBudget($borrower2, $budget10, $flags)); # Limited to library B1
 ok (CanUserModifyBudget($borrower2, $budget11, $flags));
 ok (!CanUserModifyBudget($borrower2, $budget12, $flags));
 
 # Restriction is 'owner and users'
-ok (CanUserModifyBudget($borrower1, $budget13, $flags));
+ok (!CanUserModifyBudget($borrower1, $budget13, $flags)); # No owner, no user
 ok (CanUserModifyBudget($borrower1, $budget14, $flags));
 ok (CanUserModifyBudget($borrower1, $budget15, $flags));
 ok (CanUserModifyBudget($borrower1, $budget16, $flags));
-ok (CanUserModifyBudget($borrower2, $budget13, $flags));
-ok (CanUserModifyBudget($borrower2, $budget14, $flags));
+ok (!CanUserModifyBudget($borrower2, $budget13, $flags)); # No owner, no user
+ok (!CanUserModifyBudget($borrower2, $budget14, $flags)); # No owner and user list contains borrower1
 ok (CanUserModifyBudget($borrower2, $budget15, $flags));
 ok (!CanUserModifyBudget($borrower2, $budget16, $flags));
 
@@ -239,7 +237,7 @@ ok (!CanUserModifyBudget($borrower2, $budget16, $flags));
 # All tests should failed
 $flags = {acquisition => {order_manage => 1}};
 
-$userenv->{branch} = 'B1';
+t::lib::Mocks::mock_userenv({ branchcode => 'B1' });
 
 # Restriction is 'none'
 ok (!CanUserModifyBudget($borrower1, $budget1, $flags));
@@ -282,7 +280,7 @@ ok (!CanUserModifyBudget($borrower2, $budget15, $flags));
 ok (!CanUserModifyBudget($borrower2, $budget16, $flags));
 
 
-$userenv->{branch} = 'B2';
+t::lib::Mocks::mock_userenv({ branchcode => 'B2' });
 
 # Restriction is 'none'
 ok (!CanUserModifyBudget($borrower1, $budget1, $flags));
@@ -333,8 +331,3 @@ sub Mock_GetBudgetUsers {
 
     return @{ $budgetusers{$budget_id} };
 }
-
-# C4::Context->userenv
-sub Mock_userenv {
-    return $userenv;
-}