You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

model_tests.py 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import datetime
  2. from decimal import Decimal as D
  3. from django.test import TestCase
  4. from oscar.apps.payment.models import Bankcard, Source
  5. class TestBankcard(TestCase):
  6. def test_obfuscates_number_before_saving(self):
  7. bankcard = Bankcard(number="1000011100000004")
  8. bankcard.prepare_for_save()
  9. self.assertEqual("XXXX-XXXX-XXXX-0004", bankcard.number)
  10. def test_determines_bankcard_type(self):
  11. bankcard = Bankcard(number="5500000000000004")
  12. self.assertEqual("Mastercard", bankcard.card_type)
  13. def test_provides_start_month_property(self):
  14. start = datetime.date(day=1, month=1, year=2010)
  15. bankcard = Bankcard(start_date=start)
  16. self.assertEqual("01/10", bankcard.start_month())
  17. def test_provides_end_month_property(self):
  18. end = datetime.date(day=1, month=1, year=2010)
  19. bankcard = Bankcard(expiry_date=end)
  20. self.assertEqual("01/10", bankcard.expiry_month())
  21. class TestSource(TestCase):
  22. def test_calculates_initial_balance_correctly(self):
  23. source = Source(amount_allocated=D('100'))
  24. self.assertEqual(D('100'), source.balance)
  25. def test_calculates_balance_correctly(self):
  26. source = Source(
  27. amount_allocated=D('100'),
  28. amount_debited=D('80'),
  29. amount_refunded=D('20'))
  30. self.assertEqual(
  31. D('100') - D('80') + D('20'), source.balance)
  32. def test_calculates_amount_for_refund_correctly(self):
  33. source = Source(
  34. amount_allocated=D('100'),
  35. amount_debited=D('80'),
  36. amount_refunded=D('20'))
  37. self.assertEqual(
  38. D('80') - D('20'), source.amount_available_for_refund)