92 lines
3.4 KiB
Python
92 lines
3.4 KiB
Python
from django.test import Client, TestCase
|
|
from django.core.exceptions import ValidationError
|
|
from .models import Payment, ReconciliationJar
|
|
|
|
|
|
class TestBilling(TestCase):
|
|
|
|
def test_reconciliation_jar_summary(self):
|
|
cash_payment1, cash_payment2 = self._create_two_cash_payments()
|
|
jar_summary = Payment.get_reconciliation_jar_summary()
|
|
self.assertEqual(164000, jar_summary.total)
|
|
self.assertSetEqual(
|
|
{cash_payment1, cash_payment2},
|
|
set(jar_summary.payments)
|
|
)
|
|
|
|
def test_reconciliation_jar_summary_use_only_cash(self):
|
|
cash_payment1, cash_payment2 = self._create_two_cash_payments()
|
|
|
|
confiar_payment = Payment()
|
|
confiar_payment.date_time = '2024-07-07 16:00:00'
|
|
confiar_payment.type_payment = 'CONFIAR'
|
|
confiar_payment.amount = 85000
|
|
confiar_payment.save()
|
|
|
|
bancolombia_payment = Payment()
|
|
bancolombia_payment.date_time = '2024-07-07 12:30:00'
|
|
bancolombia_payment.type_payment = 'BANCOLOMBIA'
|
|
bancolombia_payment.amount = 12000
|
|
bancolombia_payment.save()
|
|
|
|
jar_summary = Payment.get_reconciliation_jar_summary()
|
|
self.assertEqual(164000, jar_summary.total)
|
|
self.assertSetEqual(
|
|
{cash_payment1, cash_payment2},
|
|
set(jar_summary.payments)
|
|
)
|
|
|
|
def test_fail_validate_reconciliation_jar_with_discrepancy_values(self):
|
|
cash_payment1, cash_payment2 = self._create_two_cash_payments()
|
|
|
|
jar_summary = Payment.get_reconciliation_jar_summary()
|
|
|
|
reconciliation_jar = ReconciliationJar()
|
|
reconciliation_jar.date_time = '2024-07-13 13:02:00'
|
|
reconciliation_jar.description = "test reconcialiation jar"
|
|
reconciliation_jar.reconcilier = 'Jorge'
|
|
reconciliation_jar.cash_float = 0
|
|
reconciliation_jar.cash_taken = 0
|
|
reconciliation_jar.cash_discrepancy = 0
|
|
reconciliation_jar.save()
|
|
|
|
for payment in jar_summary.payments:
|
|
reconciliation_jar.payment_set.add(payment)
|
|
with self.assertRaises(ValidationError):
|
|
reconciliation_jar.clean()
|
|
|
|
def test_validate_reconciliation_jar_with_cash_float(self):
|
|
cash_payment1, cash_payment2 = self._create_two_cash_payments()
|
|
jar_summary = Payment.get_reconciliation_jar_summary()
|
|
|
|
reconciliation_jar = ReconciliationJar()
|
|
reconciliation_jar.date_time = '2024-07-13 13:02:00'
|
|
reconciliation_jar.description = "test reconcialiation jar"
|
|
reconciliation_jar.reconcilier = 'Jorge'
|
|
reconciliation_jar.cash_float = 10000
|
|
reconciliation_jar.cash_taken = jar_summary.total
|
|
reconciliation_jar.cash_discrepancy = 0
|
|
reconciliation_jar.save()
|
|
|
|
for payment in jar_summary.payments:
|
|
reconciliation_jar.payment_set.add(payment)
|
|
reconciliation_jar.clean()
|
|
reconciliation_jar.save()
|
|
self.assertTrue(reconciliation_jar.is_valid)
|
|
|
|
def _create_two_cash_payments(self):
|
|
cash_payment1 = Payment()
|
|
cash_payment1.date_time = '2024-07-07 12:00:00'
|
|
cash_payment1.type_payment = 'CASH'
|
|
cash_payment1.amount = 132000
|
|
cash_payment1.description = 'Saldo en compra'
|
|
cash_payment1.save()
|
|
|
|
cash_payment2 = Payment()
|
|
cash_payment2.date_time = '2024-07-07 13:05:00'
|
|
cash_payment2.type_payment = 'CASH'
|
|
cash_payment2.amount = 32000
|
|
cash_payment2.save()
|
|
|
|
return [cash_payment1, cash_payment2]
|