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.

calculator_tests.py 1.5KB

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