Procházet zdrojové kódy

tests :ballot_box_with_check: add tests to check basket total after rounding

master
Samar Hassan před 2 roky
rodič
revize
800382bac3
1 změnil soubory, kde provedl 69 přidání a 0 odebrání
  1. 69
    0
      tests/integration/basket/test_total.py

+ 69
- 0
tests/integration/basket/test_total.py Zobrazit soubor

@@ -0,0 +1,69 @@
1
+from decimal import Decimal as D
2
+
3
+from django.test import TestCase
4
+from django.test.utils import override_settings
5
+
6
+from oscar.apps.basket.models import Basket
7
+from oscar.apps.offer import models
8
+from oscar.apps.partner import strategy
9
+from oscar.test.basket import add_product
10
+
11
+
12
+def create_fixed_tax_basket(price):
13
+    basket = Basket.objects.create()
14
+    basket.strategy = strategy.UK()
15
+    add_product(basket, D(price), 1)
16
+    return basket
17
+
18
+
19
+class TestBasketTotalAfterRounding(TestCase):
20
+    def setUp(self):
21
+        product_range = models.Range.objects.create(
22
+            name="All products", includes_all_products=True
23
+        )
24
+        condition = models.CountCondition.objects.create(
25
+            range=product_range, type=models.Condition.COUNT, value=1
26
+        )
27
+        self.benefit = models.Benefit.objects.create(
28
+            range=product_range,
29
+            type=models.Benefit.FIXED,
30
+            value=D("11.45"),
31
+        )
32
+        self.offer = models.ConditionalOffer(
33
+            name="Test",
34
+            offer_type=models.ConditionalOffer.SITE,
35
+            condition=condition,
36
+            benefit=self.benefit,
37
+        )
38
+
39
+    @override_settings(OSCAR_OFFERS_INCL_TAX=True)
40
+    def test_total_excl_tax_precision_down(self):
41
+        basket = create_fixed_tax_basket(9.99)
42
+        self.benefit.value = D("4.13")
43
+        self.offer.apply_benefit(basket)
44
+
45
+        # 9.99-round(3.441) => 9.99-3.44 = 6.55
46
+        self.assertEqual(basket.total_excl_tax, D("6.55"))
47
+
48
+    @override_settings(OSCAR_OFFERS_INCL_TAX=True)
49
+    def test_total_excl_tax_precision_up(self):
50
+        basket = create_fixed_tax_basket(9.99)
51
+        self.benefit.value = D("4.14")
52
+        self.offer.apply_benefit(basket)
53
+
54
+        # 9.99-round(3.449) => 9.99-3.45 = 6.54
55
+        self.assertEqual(basket.total_excl_tax, D("6.54"))
56
+
57
+    def test_total_incl_tax_precision_down(self):
58
+        basket = create_fixed_tax_basket(20.37)
59
+        self.offer.apply_benefit(basket)
60
+
61
+        # 10.704 rounded to 10.70
62
+        self.assertEqual(basket.total_incl_tax, D("10.70"))
63
+
64
+    def test_total_incl_tax_precision_up(self):
65
+        basket = create_fixed_tax_basket(20.38)
66
+        self.offer.apply_benefit(basket)
67
+
68
+        # 10.716 rounded to 10.72
69
+        self.assertEqual(basket.total_incl_tax, D("10.72"))

Načítá se…
Zrušit
Uložit