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.

discount_tests.py 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from decimal import Decimal as D
  2. from django.test import TestCase
  3. import mock
  4. from oscar.apps.basket.models import Basket
  5. from oscar.apps.shipping import methods
  6. class TestDiscountingMethodsWithoutTax(TestCase):
  7. def setUp(self):
  8. self.base_method = methods.FixedPrice(D('10.00'))
  9. offer = mock.Mock()
  10. offer.shipping_discount = mock.Mock(
  11. return_value=D('2.00'))
  12. self.method = methods.TaxExclusiveOfferDiscount(
  13. self.base_method, offer)
  14. def test_delegates_properties_onto_wrapped_method(self):
  15. self.assertEqual(self.method.code, self.base_method.code)
  16. self.assertEqual(self.method.name, self.base_method.name)
  17. self.assertEqual(self.method.description,
  18. self.base_method.description)
  19. def test_delegates_is_tax_known(self):
  20. basket = Basket()
  21. charge = self.method.calculate(basket)
  22. self.assertFalse(charge.is_tax_known)
  23. def test_discounts_charge(self):
  24. basket = Basket()
  25. charge = self.method.calculate(basket)
  26. self.assertEqual(D('8.00'), charge.excl_tax)
  27. def test_can_have_tax_set_later(self):
  28. basket = Basket()
  29. charge = self.method.calculate(basket)
  30. charge.tax = D('1.00')
  31. self.assertEqual(D('9.00'), charge.incl_tax)
  32. class TestDiscountingMethodsWithTax(TestCase):
  33. def setUp(self):
  34. self.base_method = methods.FixedPrice(D('10.00'), D('12.00'))
  35. offer = mock.Mock()
  36. offer.shipping_discount = mock.Mock(
  37. return_value=D('5.00'))
  38. self.method = methods.TaxInclusiveOfferDiscount(
  39. self.base_method, offer)
  40. def test_delegates_properties_onto_wrapped_method(self):
  41. self.assertEqual(self.method.code, self.base_method.code)
  42. self.assertEqual(self.method.name, self.base_method.name)
  43. self.assertEqual(self.method.description,
  44. self.base_method.description)
  45. def test_delegates_is_tax_known(self):
  46. basket = Basket()
  47. charge = self.method.calculate(basket)
  48. self.assertTrue(charge.is_tax_known)
  49. def test_discounts_charge(self):
  50. basket = Basket()
  51. charge = self.method.calculate(basket)
  52. self.assertEqual(D('7.00'), charge.incl_tax)