|
|
@@ -16,7 +16,7 @@ class FreeTest(TestCase):
|
|
16
|
16
|
|
|
17
|
17
|
def setUp(self):
|
|
18
|
18
|
self.method = Free()
|
|
19
|
|
-
|
|
|
19
|
+
|
|
20
|
20
|
def test_shipping_is_free_for_empty_basket(self):
|
|
21
|
21
|
basket = Basket()
|
|
22
|
22
|
self.method.set_basket(basket)
|
|
|
@@ -29,51 +29,51 @@ class FreeTest(TestCase):
|
|
29
|
29
|
self.method.set_basket(basket)
|
|
30
|
30
|
self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
|
|
31
|
31
|
self.assertEquals(D('0.00'), self.method.basket_charge_excl_tax())
|
|
32
|
|
-
|
|
33
|
|
-
|
|
34
|
|
-class FixedPriceTest(TestCase):
|
|
35
|
|
-
|
|
|
32
|
+
|
|
|
33
|
+
|
|
|
34
|
+class FixedPriceTest(TestCase):
|
|
|
35
|
+
|
|
36
|
36
|
def test_fixed_price_shipping_charges_for_empty_basket(self):
|
|
37
|
37
|
method = FixedPrice(D('10.00'), D('10.00'))
|
|
38
|
38
|
basket = Basket()
|
|
39
|
39
|
method.set_basket(basket)
|
|
40
|
40
|
self.assertEquals(D('10.00'), method.basket_charge_incl_tax())
|
|
41
|
41
|
self.assertEquals(D('10.00'), method.basket_charge_excl_tax())
|
|
42
|
|
-
|
|
|
42
|
+
|
|
43
|
43
|
def test_fixed_price_shipping_assumes_no_tax(self):
|
|
44
|
44
|
method = FixedPrice(D('10.00'))
|
|
45
|
45
|
basket = Basket()
|
|
46
|
46
|
method.set_basket(basket)
|
|
47
|
47
|
self.assertEquals(D('10.00'), method.basket_charge_excl_tax())
|
|
48
|
|
-
|
|
49
|
|
- shipping_values = lambda: [('1.00',),
|
|
50
|
|
- ('5.00',),
|
|
51
|
|
- ('10.00',),
|
|
52
|
|
- ('12.00',)]
|
|
53
|
|
-
|
|
54
|
|
- @dataProvider(shipping_values)
|
|
|
48
|
+
|
|
|
49
|
+ shipping_values = lambda: [('1.00',),
|
|
|
50
|
+ ('5.00',),
|
|
|
51
|
+ ('10.00',),
|
|
|
52
|
+ ('12.00',)]
|
|
|
53
|
+
|
|
|
54
|
+ @dataProvider(shipping_values)
|
|
55
|
55
|
def test_different_values(self, value):
|
|
56
|
56
|
method = FixedPrice(D(value))
|
|
57
|
57
|
basket = Basket()
|
|
58
|
58
|
method.set_basket(basket)
|
|
59
|
59
|
self.assertEquals(D(value), method.basket_charge_excl_tax())
|
|
60
|
|
-
|
|
61
|
|
-
|
|
|
60
|
+
|
|
|
61
|
+
|
|
62
|
62
|
class OrderAndItemChargesTests(TestCase):
|
|
63
|
|
-
|
|
|
63
|
+
|
|
64
|
64
|
def setUp(self):
|
|
65
|
65
|
self.method = OrderAndItemCharges(price_per_order=D('5.00'), price_per_item=D('1.00'))
|
|
66
|
66
|
self.basket = Basket.objects.create()
|
|
67
|
67
|
self.method.set_basket(self.basket)
|
|
68
|
|
-
|
|
|
68
|
+
|
|
69
|
69
|
def test_order_level_charge_for_empty_basket(self):
|
|
70
|
70
|
self.assertEquals(D('5.00'), self.method.basket_charge_incl_tax())
|
|
71
|
|
-
|
|
|
71
|
+
|
|
72
|
72
|
def test_single_item_basket(self):
|
|
73
|
73
|
p = create_product()
|
|
74
|
74
|
self.basket.add_product(p)
|
|
75
|
75
|
self.assertEquals(D('5.00') + D('1.00'), self.method.basket_charge_incl_tax())
|
|
76
|
|
-
|
|
|
76
|
+
|
|
77
|
77
|
def test_multi_item_basket(self):
|
|
78
|
78
|
p = create_product()
|
|
79
|
79
|
self.basket.add_product(p, 7)
|
|
|
@@ -81,15 +81,15 @@ class OrderAndItemChargesTests(TestCase):
|
|
81
|
81
|
|
|
82
|
82
|
|
|
83
|
83
|
class ZeroFreeThresholdTest(TestCase):
|
|
84
|
|
-
|
|
|
84
|
+
|
|
85
|
85
|
def setUp(self):
|
|
86
|
86
|
self.method = OrderAndItemCharges(price_per_order=D('10.00'), free_shipping_threshold=D('0.00'))
|
|
87
|
87
|
self.basket = Basket.objects.create()
|
|
88
|
88
|
self.method.set_basket(self.basket)
|
|
89
|
|
-
|
|
|
89
|
+
|
|
90
|
90
|
def test_free_shipping_with_empty_basket(self):
|
|
91
|
91
|
self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
|
|
92
|
|
-
|
|
|
92
|
+
|
|
93
|
93
|
def test_free_shipping_with_nonempty_basket(self):
|
|
94
|
94
|
p = create_product(D('5.00'))
|
|
95
|
95
|
self.basket.add_product(p)
|
|
|
@@ -97,22 +97,22 @@ class ZeroFreeThresholdTest(TestCase):
|
|
97
|
97
|
|
|
98
|
98
|
|
|
99
|
99
|
class NonZeroFreeThresholdTest(TestCase):
|
|
100
|
|
-
|
|
|
100
|
+
|
|
101
|
101
|
def setUp(self):
|
|
102
|
102
|
self.method = OrderAndItemCharges(price_per_order=D('10.00'), free_shipping_threshold=D('20.00'))
|
|
103
|
103
|
self.basket = Basket.objects.create()
|
|
104
|
104
|
self.method.set_basket(self.basket)
|
|
105
|
|
-
|
|
|
105
|
+
|
|
106
|
106
|
def test_basket_below_threshold(self):
|
|
107
|
107
|
p = create_product(D('5.00'))
|
|
108
|
108
|
self.basket.add_product(p)
|
|
109
|
109
|
self.assertEquals(D('10.00'), self.method.basket_charge_incl_tax())
|
|
110
|
|
-
|
|
|
110
|
+
|
|
111
|
111
|
def test_basket_on_threshold(self):
|
|
112
|
112
|
p = create_product(D('5.00'))
|
|
113
|
113
|
self.basket.add_product(p, 4)
|
|
114
|
114
|
self.assertEquals(D('0.00'), self.method.basket_charge_incl_tax())
|
|
115
|
|
-
|
|
|
115
|
+
|
|
116
|
116
|
def test_basket_above_threshold(self):
|
|
117
|
117
|
p = create_product(D('5.00'))
|
|
118
|
118
|
self.basket.add_product(p, 8)
|
|
|
@@ -151,6 +151,14 @@ class ScalesTests(TestCase):
|
|
151
|
151
|
scales = Scales(attribute_code='weight')
|
|
152
|
152
|
self.assertEquals(1+2, scales.weigh_basket(basket))
|
|
153
|
153
|
|
|
|
154
|
+ def test_weight_calculation_of_basket_with_line_quantity(self):
|
|
|
155
|
+ basket = Basket()
|
|
|
156
|
+ basket.add_product(create_product(attributes={'weight': 1}), quantity=3)
|
|
|
157
|
+ basket.add_product(create_product(attributes={'weight': 2}), quantity=4)
|
|
|
158
|
+
|
|
|
159
|
+ scales = Scales(attribute_code='weight')
|
|
|
160
|
+ self.assertEquals(1*3+2*4, scales.weigh_basket(basket))
|
|
|
161
|
+
|
|
154
|
162
|
|
|
155
|
163
|
class WeightBasedMethodTests(TestCase):
|
|
156
|
164
|
|