您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

calculator_tests.py 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. method = methods.FixedPrice(D('5.00'))
  15. total = self.calculator.calculate(basket, method)
  16. self.assertIsInstance(total, prices.Price)
  17. self.assertEquals(D('10.00') + D('5.00'), total.excl_tax)
  18. self.assertFalse(total.is_tax_known)
  19. with self.assertRaises(AttributeError):
  20. total.incl_tax
  21. with self.assertRaises(AttributeError):
  22. total.tax
  23. def test_returns_correct_totals_when_tax_is_known(self):
  24. basket = mock.Mock()
  25. basket.total_excl_tax = D('10.00')
  26. basket.total_incl_tax = D('12.00')
  27. basket.is_tax_known = True
  28. method = methods.FixedPrice(D('5.00'), D('5.50'))
  29. total = self.calculator.calculate(basket, method)
  30. self.assertIsInstance(total, prices.Price)
  31. self.assertEquals(D('10.00') + D('5.00'), total.excl_tax)
  32. self.assertTrue(total.is_tax_known)
  33. self.assertEquals(D('12.00') + D('5.50'), total.incl_tax)
  34. self.assertEquals(D('2.00') + D('0.50'), total.tax)