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.

test_calculator.py 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from decimal import Decimal as D
  2. from unittest import mock
  3. from django.test import TestCase
  4. from oscar.apps.checkout import calculators
  5. from oscar.core import prices
  6. from oscar.core.loading import get_class
  7. SurchargeApplicator = get_class("checkout.applicator", "SurchargeApplicator")
  8. class TestOrderTotalCalculator(TestCase):
  9. def setUp(self):
  10. self.calculator = calculators.OrderTotalCalculator()
  11. def test_returns_correct_totals_when_tax_is_not_known(self):
  12. basket = mock.Mock()
  13. basket.total_excl_tax = D("10.00")
  14. basket.is_tax_known = False
  15. shipping_charge = prices.Price(currency=basket.currency, excl_tax=D("5.00"))
  16. applicator = SurchargeApplicator()
  17. surcharges = applicator.get_applicable_surcharges(basket)
  18. total = self.calculator.calculate(basket, shipping_charge, surcharges)
  19. self.assertIsInstance(total, prices.Price)
  20. self.assertEqual(D("10.00") + D("5.00") + D("10.0"), total.excl_tax)
  21. self.assertFalse(total.is_tax_known)
  22. def test_returns_correct_totals_when_tax_is_known(self):
  23. basket = mock.Mock()
  24. basket.total_excl_tax = D("10.00")
  25. basket.total_incl_tax = D("12.00")
  26. basket.is_tax_known = True
  27. shipping_charge = prices.Price(
  28. currency=basket.currency, excl_tax=D("5.00"), tax=D("0.50")
  29. )
  30. applicator = SurchargeApplicator()
  31. surcharges = applicator.get_applicable_surcharges(basket)
  32. total = self.calculator.calculate(basket, shipping_charge, surcharges)
  33. self.assertIsInstance(total, prices.Price)
  34. self.assertEqual(D("10.00") + D("5.00") + D("20.0"), total.excl_tax)
  35. self.assertTrue(total.is_tax_known)
  36. self.assertEqual(D("12.00") + D("5.50") + D("22.00"), total.incl_tax)
  37. self.assertEqual(D("2.00") + D("0.50") + D("2.00"), total.tax)