Bug 18736: Unit tests for GetBudgetHierarchy
authorNick Clemens <nick@bywatersolutions.com>
Fri, 24 Aug 2018 11:11:19 +0000 (11:11 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 25 Mar 2019 14:29:30 +0000 (14:29 +0000)
prove -v t/db_dependent/Budgets.t

Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit d9b3d0fa36869a40b9db65375dba4972913697d8)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

t/db_dependent/Budgets.t

index 8c0308e..db9787f 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 use Modern::Perl;
-use Test::More tests => 146;
+use Test::More tests => 147;
 
 BEGIN {
     use_ok('C4::Budgets')
@@ -969,7 +969,7 @@ subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
 
 subtest 'GetBudgetSpent GetBudgetOrdered GetBudgetsPlanCell tests' => sub {
 
-    plan tests => 16;
+    plan tests => 24;
 
 #Let's build an order, we need a couple things though
     t::lib::Mocks::mock_preference('OrderPriceRounding','nearest_cent');
@@ -987,8 +987,13 @@ subtest 'GetBudgetSpent GetBudgetOrdered GetBudgetsPlanCell tests' => sub {
             authorised_value => 'PICKLE',
         }
     });
+    my $spent_budget_period = $builder->build({ source => 'Aqbudgetperiod', value => {
+        }
+    });
     my $spent_budget = $builder->build({ source => 'Aqbudget', value => {
             sort1_authcat => $budget_authcat->{category_name},
+            budget_period_id => $spent_budget_period->{budget_period_id},
+            budget_parent_id => undef,
         }
     });
     my $spent_orderinfo = {
@@ -1033,6 +1038,16 @@ subtest 'GetBudgetSpent GetBudgetOrdered GetBudgetsPlanCell tests' => sub {
     $spent_ordered = GetBudgetOrdered( $spent_order->{budget_id} );
     is($spent_ordered,'78.8',"We expect the ordered amount to be equal to the estimated price rounded times quantity");
 
+    #Test GetBudgetHierarchy for rounding
+    t::lib::Mocks::mock_preference('OrderPriceRounding','');
+    my $gbh = GetBudgetHierarchy($spent_budget->{budget_period_id});
+    is ( @$gbh[0]->{budget_spent}+0, 0, "We expect this to be an exact order cost * quantity");
+    is ( @$gbh[0]->{budget_ordered}+0, 78.8336, "We expect this to be an exact order cost * quantity");
+    t::lib::Mocks::mock_preference('OrderPriceRounding','nearest_cent');
+    $gbh = GetBudgetHierarchy($spent_budget->{budget_period_id});
+    is ( @$gbh[0]->{budget_spent}+0, 0, "We expect this to be an rounded order cost * quantity");
+    is ( @$gbh[0]->{budget_ordered}+0, 78.8, "We expect this to be an exact order cost * quantity");
+
 #Let's test some budget planning
 #Regression tests for bug 18736
     #We need an item to test by BRANCHES
@@ -1097,7 +1112,7 @@ subtest 'GetBudgetSpent GetBudgetOrdered GetBudgetsPlanCell tests' => sub {
     });
     my $received_order = $builder->build({ source => 'Aqorder', value => $spent_orderinfo });
 
-#And receive
+#And receive a copy of the order so we have both spent and ordered values
 
     ModReceiveOrder({
             biblionumber => $spent_order->{biblionumber},
@@ -1118,6 +1133,16 @@ subtest 'GetBudgetSpent GetBudgetOrdered GetBudgetsPlanCell tests' => sub {
     $spent_spent = GetBudgetSpent( $spent_order->{budget_id} );
     is($spent_spent,'78.8',"We expect the spent amount to be equal to the estimated price rounded times quantity");
 
+    #Test GetBudgetHierarchy for rounding
+    t::lib::Mocks::mock_preference('OrderPriceRounding','');
+    $gbh = GetBudgetHierarchy($spent_budget->{budget_period_id});
+    is ( @$gbh[0]->{budget_spent}, 78.8336, "We expect this to be an exact order cost * quantity");
+    is ( @$gbh[0]->{budget_ordered}, 78.8336, "We expect this to be an exact order cost * quantity");
+    t::lib::Mocks::mock_preference('OrderPriceRounding','nearest_cent');
+    $gbh = GetBudgetHierarchy($spent_budget->{budget_period_id});
+    is ( @$gbh[0]->{budget_spent}+0, 78.8, "We expect this to be a rounded order cost * quantity");
+    is ( @$gbh[0]->{budget_ordered}, 78.8, "We expect this to be a rounded order cost * quantity");
+
 };
 
 sub _get_dependencies {