| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from decimal import Decimal as D
- from unittest import mock
-
- from django.test import TestCase
-
- from oscar.apps.checkout import calculators
- from oscar.core import prices
- from oscar.core.loading import get_class
-
- SurchargeApplicator = get_class("checkout.applicator", "SurchargeApplicator")
-
-
- class TestOrderTotalCalculator(TestCase):
- def setUp(self):
- self.calculator = calculators.OrderTotalCalculator()
-
- def test_returns_correct_totals_when_tax_is_not_known(self):
- basket = mock.Mock()
- basket.total_excl_tax = D("10.00")
- basket.is_tax_known = False
-
- shipping_charge = prices.Price(currency=basket.currency, excl_tax=D("5.00"))
-
- applicator = SurchargeApplicator()
- surcharges = applicator.get_applicable_surcharges(basket)
-
- total = self.calculator.calculate(basket, shipping_charge, surcharges)
-
- self.assertIsInstance(total, prices.Price)
- self.assertEqual(D("10.00") + D("5.00") + D("10.0"), total.excl_tax)
- self.assertFalse(total.is_tax_known)
-
- def test_returns_correct_totals_when_tax_is_known(self):
- basket = mock.Mock()
- basket.total_excl_tax = D("10.00")
- basket.total_incl_tax = D("12.00")
- basket.is_tax_known = True
-
- shipping_charge = prices.Price(
- currency=basket.currency, excl_tax=D("5.00"), tax=D("0.50")
- )
-
- applicator = SurchargeApplicator()
- surcharges = applicator.get_applicable_surcharges(basket)
-
- total = self.calculator.calculate(basket, shipping_charge, surcharges)
-
- self.assertIsInstance(total, prices.Price)
- self.assertEqual(D("10.00") + D("5.00") + D("20.0"), total.excl_tax)
- self.assertTrue(total.is_tax_known)
- self.assertEqual(D("12.00") + D("5.50") + D("22.00"), total.incl_tax)
- self.assertEqual(D("2.00") + D("0.50") + D("2.00"), total.tax)
|