Bug 21087: Hash passwords in ->update_password
[koha-ffzg.git] / t / db_dependent / Budgets.t
index 08f30ae..e28e20c 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 use Modern::Perl;
-use Test::More tests => 144;
+use Test::More tests => 145;
 
 BEGIN {
     use_ok('C4::Budgets')
@@ -8,10 +8,10 @@ BEGIN {
 use C4::Context;
 use C4::Biblio;
 use C4::Acquisition;
-use C4::Members qw( AddMember );
 
 use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Orders;
+use Koha::Patrons;
 
 use t::lib::TestBuilder;
 
@@ -398,7 +398,7 @@ is( GetBudgetHierarchySpent( $budget_id111 ), 20, "total spent for budget111 is
 my $budget_period_amount = 100;
 my $budget_amount = 50;
 
-my $budget = AddBudgetPeriod(
+$budget = AddBudgetPeriod(
     {
         budget_period_startdate   => '2017-08-22',
         budget_period_enddate     => '2018-08-22',
@@ -460,11 +460,11 @@ my $order = Koha::Acquisition::Order->new(
       discount           => 0,
       uncertainprice     => 0,
    }
-)->insert;
+)->store;
 
 ModReceiveOrder({
    bibionumber       => $biblio,
-   order             => $order,
+   order             => $order->unblessed,
    budget_id         => $fund,
    quantityreceived  => 2,
    invoice           => $test_invoice,
@@ -472,7 +472,7 @@ ModReceiveOrder({
 } );
 
 is ( GetBudgetSpent( $fund ), 6, "total shipping cost is 6");
-is ( GetBudgetOrdered( $fund ), '20.000000', "total ordered price is 20");
+is ( GetBudgetOrdered( $fund ), '20', "total ordered price is 20");
 
 
 # CloneBudgetPeriod
@@ -681,7 +681,7 @@ for my $new_budget ( @new_budgets ) {
 
 my $patron_category = $builder->build({ source => 'Category' });
 my $branchcode = $library->{branchcode};
-my $john_doe = C4::Members::AddMember(
+my $john_doe = Koha::Patron->new({
     cardnumber   => '123456',
     firstname    => 'John',
     surname      => 'Doe',
@@ -690,7 +690,7 @@ my $john_doe = C4::Members::AddMember(
     dateofbirth  => '',
     dateexpiry   => '9999-12-31',
     userid       => 'john.doe'
-);
+})->store->borrowernumber;
 
 C4::Budgets::SetOwnerToFundHierarchy( $budget_id1, $john_doe );
 is( C4::Budgets::GetBudget($budget_id1)->{budget_owner_id},
@@ -706,7 +706,7 @@ is( C4::Budgets::GetBudget($budget_id2)->{budget_owner_id},
 is( C4::Budgets::GetBudget($budget_id21)->{budget_owner_id},
     undef, "SetOwnerToFundHierarchy should not have set an owner for budget 21 ($budget_id21)" );
 
-my $jane_doe = C4::Members::AddMember(
+my $jane_doe = Koha::Patron->new({
     cardnumber   => '789012',
     firstname    => 'Jane',
     surname      => 'Doe',
@@ -715,7 +715,7 @@ my $jane_doe = C4::Members::AddMember(
     dateofbirth  => '',
     dateexpiry   => '9999-12-31',
     userid       => 'jane.doe'
-);
+})->store->borrowernumber;
 
 C4::Budgets::SetOwnerToFundHierarchy( $budget_id11, $jane_doe );
 is( C4::Budgets::GetBudget($budget_id1)->{budget_owner_id},
@@ -798,6 +798,120 @@ is( scalar @{$authCat}, 0, "GetBudgetAuthCats returns only non-empty sorting cat
 
 # /Test GetBudgetAuthCats
 
+subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
+    plan tests => 10;
+
+    my $budget = $builder->build({
+        source => 'Aqbudget',
+        value  => {
+            budget_amount => 1000,
+        }
+    });
+    my $invoice = $builder->build({
+        source => 'Aqinvoice',
+        value  => {
+            closedate => undef,
+        }
+    });
+
+    my $spent = GetBudgetSpent( $budget->{budget_id} );
+    my $ordered = GetBudgetOrdered( $budget->{budget_id} );
+
+    is( $spent, 0, "New budget, no orders/invoices, should be nothing spent");
+    is( $ordered, 0, "New budget, no orders/invoices, should be nothing ordered");
+
+    my $inv_adj_1 = $builder->build({
+        source => 'AqinvoiceAdjustment',
+        value  => {
+            invoiceid     => $invoice->{invoiceid},
+            adjustment    => 3,
+            encumber_open => 0,
+            budget_id     => $budget->{budget_id},
+        }
+    });
+
+    $spent = GetBudgetSpent( $budget->{budget_id} );
+    $ordered = GetBudgetOrdered( $budget->{budget_id} );
+    is( $spent, 0, "After adding invoice adjustment on open invoice, should be nothing spent");
+    is( $ordered, 0, "After adding invoice adjustment on open invoice not encumbered, should be nothing ordered");
+
+    my $inv_adj_2 = $builder->build({
+        source => 'AqinvoiceAdjustment',
+        value  => {
+            invoiceid     => $invoice->{invoiceid},
+            adjustment    => 3,
+            encumber_open => 1,
+            budget_id     => $budget->{budget_id},
+        }
+    });
+
+    $spent = GetBudgetSpent( $budget->{budget_id} );
+    $ordered = GetBudgetOrdered( $budget->{budget_id} );
+    is( $spent, 0, "After adding invoice adjustment on open invoice, should be nothing spent");
+    is( $ordered, 3, "After adding invoice adjustment on open invoice encumbered, should be 3 ordered");
+
+    my $invoice_2 = $builder->build({
+        source => 'Aqinvoice',
+        value  => {
+            closedate => '2017-07-01',
+        }
+    });
+    my $inv_adj_3 = $builder->build({
+        source => 'AqinvoiceAdjustment',
+        value  => {
+            invoiceid     => $invoice_2->{invoiceid},
+            adjustment    => 3,
+            encumber_open => 0,
+            budget_id     => $budget->{budget_id},
+        }
+    });
+    my $inv_adj_4 = $builder->build({
+        source => 'AqinvoiceAdjustment',
+        value  => {
+            invoiceid     => $invoice_2->{invoiceid},
+            adjustment    => 3,
+            encumber_open => 1,
+            budget_id     => $budget->{budget_id},
+        }
+    });
+
+    $spent = GetBudgetSpent( $budget->{budget_id} );
+    $ordered = GetBudgetOrdered( $budget->{budget_id} );
+    is( $spent, 6, "After adding invoice adjustment on closed invoice, should be 6 spent, encumber has no affect once closed");
+    is( $ordered, 3, "After adding invoice adjustment on closed invoice, should still be 3 ordered");
+
+    my $budget_2 = $builder->build({
+        source => 'Aqbudget',
+        value  => {
+            budget_amount => 1000,
+        }
+    });
+    my $inv_adj_5 = $builder->build({
+        source => 'AqinvoiceAdjustment',
+        value  => {
+            invoiceid     => $invoice->{invoiceid},
+            adjustment    => 3,
+            encumber_open => 1,
+            budget_id     => $budget_2->{budget_id},
+        }
+    });
+    my $inv_adj_6 = $builder->build({
+        source => 'AqinvoiceAdjustment',
+        value  => {
+            invoiceid     => $invoice_2->{invoiceid},
+            adjustment    => 3,
+            encumber_open => 1,
+            budget_id     => $budget_2->{budget_id},
+        }
+    });
+
+    $spent = GetBudgetSpent( $budget->{budget_id} );
+    $ordered = GetBudgetOrdered( $budget->{budget_id} );
+    is( $spent, 6, "After adding invoice adjustment on a different budget should be 6 spent/budget unaffected");
+    is( $ordered, 3, "After adding invoice adjustment on a different budget, should still be 3 ordered/budget unaffected");
+
+};
+
 sub _get_dependencies {
     my ($budget_hierarchy) = @_;
     my $graph;