| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import datetime
- from decimal import Decimal as D
-
- from django.test import TestCase
-
- from oscar.apps.payment.models import Bankcard, Source
- from oscar.core.compat import get_user_model
- from oscar.test import factories
-
-
- class TestBankcard(TestCase):
- def test_obfuscates_number_before_saving(self):
- bankcard = Bankcard(number="1000011100000004")
- bankcard.prepare_for_save()
- self.assertEqual("XXXX-XXXX-XXXX-0004", bankcard.number)
-
- def test_determines_bankcard_type(self):
- bankcard = Bankcard(number="5500000000000004")
- self.assertEqual("Mastercard", bankcard.card_type)
-
- def test_provides_start_month_property(self):
- start = datetime.date(day=1, month=1, year=2010)
- bankcard = Bankcard(start_date=start)
- self.assertEqual("01/10", bankcard.start_month())
-
- def test_provides_end_month_property(self):
- end = datetime.date(day=1, month=1, year=2010)
- bankcard = Bankcard(expiry_date=end)
- self.assertEqual("01/10", bankcard.expiry_month())
-
- def test_bankcard_card_correct_save(self):
- # issue #1486
- user_klass = get_user_model()
- user = user_klass.objects.create_user("_", "a@a.com", "pwd")
- end = datetime.date(day=1, month=1, year=2010)
- bankcard = Bankcard.objects.create(
- user=user, number="5500000000000004", expiry_date=end
- )
- saved_bankcard = Bankcard.objects.get(id=bankcard.id)
- self.assertEqual("Mastercard", saved_bankcard.card_type)
-
- def test_cardtype_persists_after_save(self):
- user = factories.UserFactory()
- end = datetime.date(day=1, month=1, year=2010)
- bankcard = Bankcard(user=user, number="5500000000000004", expiry_date=end)
- self.assertEqual("Mastercard", bankcard.card_type)
-
- bankcard.save()
- self.assertEqual("Mastercard", bankcard.card_type)
-
- reloaded_bankcard = Bankcard.objects.get(id=bankcard.id)
- self.assertEqual("Mastercard", reloaded_bankcard.card_type)
-
-
- class TestSource(TestCase):
- def test_calculates_initial_balance_correctly(self):
- source = Source(amount_allocated=D("100"))
- self.assertEqual(D("100"), source.balance)
-
- def test_calculates_balance_correctly(self):
- source = Source(
- amount_allocated=D("100"), amount_debited=D("80"), amount_refunded=D("20")
- )
- self.assertEqual(D("100") - D("80") + D("20"), source.balance)
-
- def test_calculates_amount_for_refund_correctly(self):
- source = Source(
- amount_allocated=D("100"), amount_debited=D("80"), amount_refunded=D("20")
- )
- self.assertEqual(D("80") - D("20"), source.amount_available_for_refund)
-
-
- class TestAPaymentSource(TestCase):
- def setUp(self):
- order = factories.create_order()
- self.source = factories.SourceFactory(order=order)
-
- def test_allocation_doesnt_error(self):
- self.source.allocate(D("100.00"))
-
- def test_debit_doesnt_error(self):
- self.source.allocate(D("100.00"))
- self.source.debit(D("80.00"))
-
- def test_full_debit_doesnt_error(self):
- self.source.allocate(D("100.00"))
- self.source.debit()
- self.assertEqual(D("0.00"), self.source.balance)
-
- def test_refund_doesnt_error(self):
- self.source.allocate(D("100.00"))
- self.source.debit(D("80.00"))
- self.source.refund(D("50.00"))
|