Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

model_tests.py 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import datetime
  2. from decimal import Decimal as D
  3. from django.test import TestCase
  4. from oscar.core.compat import get_user_model
  5. from oscar.apps.payment.models import Bankcard, Source
  6. class TestBankcard(TestCase):
  7. def test_obfuscates_number_before_saving(self):
  8. bankcard = Bankcard(number="1000011100000004")
  9. bankcard.prepare_for_save()
  10. self.assertEqual("XXXX-XXXX-XXXX-0004", bankcard.number)
  11. def test_determines_bankcard_type(self):
  12. bankcard = Bankcard(number="5500000000000004")
  13. self.assertEqual("Mastercard", bankcard.card_type)
  14. def test_provides_start_month_property(self):
  15. start = datetime.date(day=1, month=1, year=2010)
  16. bankcard = Bankcard(start_date=start)
  17. self.assertEqual("01/10", bankcard.start_month())
  18. def test_provides_end_month_property(self):
  19. end = datetime.date(day=1, month=1, year=2010)
  20. bankcard = Bankcard(expiry_date=end)
  21. self.assertEqual("01/10", bankcard.expiry_month())
  22. def test_bankcard_card_correct_save(self):
  23. # issue #1486
  24. user_klass = get_user_model()
  25. user = user_klass.objects.create_user('_', 'a@a.com', 'pwd')
  26. end = datetime.date(day=1, month=1, year=2010)
  27. bankcard = Bankcard.objects.create(
  28. user=user, number="5500000000000004", expiry_date=end)
  29. saved_bankcard = Bankcard.objects.get(id=bankcard.id)
  30. self.assertEqual('Mastercard', saved_bankcard.card_type)
  31. class TestSource(TestCase):
  32. def test_calculates_initial_balance_correctly(self):
  33. source = Source(amount_allocated=D('100'))
  34. self.assertEqual(D('100'), source.balance)
  35. def test_calculates_balance_correctly(self):
  36. source = Source(
  37. amount_allocated=D('100'),
  38. amount_debited=D('80'),
  39. amount_refunded=D('20'))
  40. self.assertEqual(
  41. D('100') - D('80') + D('20'), source.balance)
  42. def test_calculates_amount_for_refund_correctly(self):
  43. source = Source(
  44. amount_allocated=D('100'),
  45. amount_debited=D('80'),
  46. amount_refunded=D('20'))
  47. self.assertEqual(
  48. D('80') - D('20'), source.amount_available_for_refund)