| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from decimal import Decimal as D
- from unittest import mock
-
- from django.test import TestCase
-
- from oscar.apps.partner import strategy
-
-
- class TestNoTaxMixin(TestCase):
- def setUp(self):
- self.mixin = strategy.NoTax()
- self.product = mock.Mock()
- self.stockrecord = mock.Mock()
- self.stockrecord.price = D("12.00")
-
- def test_returns_no_prices_without_stockrecord(self):
- policy = self.mixin.pricing_policy(self.product, None)
- self.assertFalse(policy.exists)
-
- def test_returns_zero_tax(self):
- policy = self.mixin.pricing_policy(self.product, self.stockrecord)
- self.assertEqual(D("0.00"), policy.tax)
-
- def test_doesnt_add_tax_to_net_price(self):
- policy = self.mixin.pricing_policy(self.product, self.stockrecord)
- self.assertEqual(D("12.00"), policy.incl_tax)
-
-
- class TestFixedRateTaxMixin(TestCase):
- def setUp(self):
- self.mixin = strategy.FixedRateTax()
- self.mixin.rate = D("0.10")
- self.product = mock.Mock()
- self.stockrecord = mock.Mock()
- self.stockrecord.price = D("12.00")
-
- def test_returns_no_prices_without_stockrecord(self):
- policy = self.mixin.pricing_policy(self.product, None)
- self.assertFalse(policy.exists)
-
- def test_returns_correct_tax(self):
- policy = self.mixin.pricing_policy(self.product, self.stockrecord)
- expected_tax = self.stockrecord.price * self.mixin.get_rate(
- self.product, self.stockrecord
- )
- self.assertEqual(expected_tax, policy.tax)
-
- def test_adds_tax_to_net_price(self):
- policy = self.mixin.pricing_policy(self.product, self.stockrecord)
- self.assertEqual(D("13.20"), policy.incl_tax)
|