Bug 25123: Unit tests
authorNick Clemens <nick@bywatersolutions.com>
Mon, 13 Apr 2020 11:38:23 +0000 (11:38 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 21 Apr 2020 11:29:34 +0000 (12:29 +0100)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

t/db_dependent/Overdues.t

index ab06944..5305066 100644 (file)
@@ -132,7 +132,7 @@ $schema->storage->txn_rollback;
 
 subtest 'UpdateFine tests' => sub {
 
-    plan tests => 59;
+    plan tests => 68;
 
     $schema->storage->txn_begin;
 
@@ -242,6 +242,36 @@ subtest 'UpdateFine tests' => sub {
     # Total : Outstanding : MaxFine
     #  100  :     100     :   100
 
+    # A day passes, the item is still overdue, update fine is called again
+    # we don't expect to increase above MaxFine of 100
+    UpdateFine(
+        {
+            issue_id       => $checkout2->issue_id,
+            itemnumber     => $item2->itemnumber,
+            borrowernumber => $patron->borrowernumber,
+            amount         => '40',
+            due            => $checkout2->date_due
+        }
+    );
+
+    $fines = Koha::Account::Lines->search(
+        { borrowernumber => $patron->borrowernumber },
+        { order_by       => { '-asc' => 'accountlines_id' } }
+    );
+    is( $fines->count,        2,    "Existing fine updated for second checkout, no new fine added" );
+    $fine = $fines->next;
+    is( $fine->amount+0, 80, "First fine amount unchanged" );
+    is( $fine->amountoutstanding+0, 80, "First fine amountoutstanding unchanged" );
+    my $fine2 = $fines->next;
+    is( $fine2->amount+0, 20, "Second fine capped at '20' by MaxFine" );
+    is( $fine2->amountoutstanding+0, 20, "Second fine amountoutstanding capped at '20' by MaxFine" );
+    is( $fine2->issue_id, $checkout2->issue_id, "Second fine is associated with the correct issue" );
+    is( $fine2->itemnumber, $checkout2->itemnumber, "Second fine is associated with the correct item" );
+    is( $fine->amount + $fine2->amount, '100', "Total fines = 100" );
+    is( $fine->amountoutstanding + $fine2->amountoutstanding, '100', "Total outstanding = 100" );
+    # Total : Outstanding : MaxFine
+    #  100  :     100     :   100
+
     # Partial pay fine 1
     $fine->amountoutstanding(50)->store;
     # Total : Outstanding : MaxFine