|
|
@@ -3,16 +3,17 @@ from django.utils.six.moves import http_client
|
|
3
|
3
|
import datetime
|
|
4
|
4
|
|
|
5
|
5
|
from django.conf import settings
|
|
6
|
|
-from django.test import TestCase, Client
|
|
|
6
|
+from django.test import TestCase
|
|
7
|
7
|
from django.utils.translation import ugettext
|
|
8
|
8
|
from django.core.urlresolvers import reverse
|
|
9
|
9
|
|
|
10
|
10
|
from oscar.test.factories import create_product
|
|
11
|
11
|
from oscar.core.compat import get_user_model
|
|
12
|
|
-from oscar.apps.basket.models import Basket
|
|
13
|
|
-from oscar.apps.basket import reports
|
|
14
|
|
-from oscar.test.basket import add_product
|
|
15
|
12
|
from oscar.test import factories
|
|
|
13
|
+from oscar.test.basket import add_product
|
|
|
14
|
+from oscar.apps.basket import reports
|
|
|
15
|
+from oscar.apps.basket.models import Basket
|
|
|
16
|
+from oscar.test.testcases import WebTestCase
|
|
16
|
17
|
from oscar.apps.partner import strategy
|
|
17
|
18
|
|
|
18
|
19
|
|
|
|
@@ -42,7 +43,8 @@ class TestBasketMerging(TestCase):
|
|
42
|
43
|
self.assertEqual(2, line.quantity)
|
|
43
|
44
|
|
|
44
|
45
|
|
|
45
|
|
-class AnonAddToBasketViewTests(TestCase):
|
|
|
46
|
+class AnonAddToBasketViewTests(WebTestCase):
|
|
|
47
|
+ csrf_checks = False
|
|
46
|
48
|
|
|
47
|
49
|
def setUp(self):
|
|
48
|
50
|
self.product = create_product(
|
|
|
@@ -51,25 +53,24 @@ class AnonAddToBasketViewTests(TestCase):
|
|
51
|
53
|
post_params = {'product_id': self.product.id,
|
|
52
|
54
|
'action': 'add',
|
|
53
|
55
|
'quantity': 1}
|
|
54
|
|
- self.client = Client()
|
|
55
|
|
- self.response = self.client.post(url, post_params)
|
|
|
56
|
+ self.response = self.app.post(url, params=post_params)
|
|
56
|
57
|
|
|
57
|
58
|
def test_cookie_is_created(self):
|
|
58
|
|
- self.assertTrue('oscar_open_basket' in self.response.cookies)
|
|
|
59
|
+ self.assertTrue('oscar_open_basket' in self.response.client.cookies)
|
|
59
|
60
|
|
|
60
|
61
|
def test_price_is_recorded(self):
|
|
61
|
|
- basket_id = self.response.cookies['oscar_open_basket'].value.split(':')[0]
|
|
|
62
|
+ basket_id = self.response.client.cookies['oscar_open_basket'].value.split(':')[0]
|
|
62
|
63
|
basket = Basket.objects.get(id=basket_id)
|
|
63
|
64
|
line = basket.lines.get(product=self.product)
|
|
64
|
65
|
stockrecord = self.product.stockrecords.all()[0]
|
|
65
|
66
|
self.assertEqual(stockrecord.price_excl_tax, line.price_excl_tax)
|
|
66
|
67
|
|
|
67
|
68
|
|
|
68
|
|
-class BasketSummaryViewTests(TestCase):
|
|
|
69
|
+class BasketSummaryViewTests(WebTestCase):
|
|
69
|
70
|
|
|
70
|
71
|
def setUp(self):
|
|
71
|
72
|
url = reverse('basket:summary')
|
|
72
|
|
- self.response = self.client.get(url)
|
|
|
73
|
+ self.response = self.app.get(url)
|
|
73
|
74
|
|
|
74
|
75
|
def test_shipping_method_in_context(self):
|
|
75
|
76
|
self.assertTrue('shipping_method' in self.response.context)
|
|
|
@@ -88,7 +89,8 @@ class BasketSummaryViewTests(TestCase):
|
|
88
|
89
|
self.assertEqual(0, basket.num_lines)
|
|
89
|
90
|
|
|
90
|
91
|
|
|
91
|
|
-class BasketThresholdTest(TestCase):
|
|
|
92
|
+class BasketThresholdTest(WebTestCase):
|
|
|
93
|
+ csrf_checks = False
|
|
92
|
94
|
|
|
93
|
95
|
def setUp(self):
|
|
94
|
96
|
self._old_threshold = settings.OSCAR_MAX_BASKET_QUANTITY_THRESHOLD
|
|
|
@@ -103,19 +105,19 @@ class BasketThresholdTest(TestCase):
|
|
103
|
105
|
post_params = {'product_id': dummy_product.id,
|
|
104
|
106
|
'action': 'add',
|
|
105
|
107
|
'quantity': 2}
|
|
106
|
|
- response = self.client.post(url, post_params)
|
|
107
|
|
- self.assertTrue('oscar_open_basket' in response.cookies)
|
|
|
108
|
+ response = self.app.post(url, params=post_params)
|
|
|
109
|
+ self.assertTrue('oscar_open_basket' in response.client.cookies)
|
|
108
|
110
|
post_params = {'product_id': dummy_product.id,
|
|
109
|
111
|
'action': 'add',
|
|
110
|
112
|
'quantity': 2}
|
|
111
|
|
- response = self.client.post(url, post_params)
|
|
|
113
|
+ response = self.app.post(url, params=post_params)
|
|
112
|
114
|
|
|
113
|
115
|
expected = ugettext(
|
|
114
|
116
|
"Due to technical limitations we are not able to ship more "
|
|
115
|
117
|
"than %(threshold)d items in one order. Your basket currently "
|
|
116
|
118
|
"has %(basket)d items."
|
|
117
|
119
|
) % ({'threshold': 3, 'basket': 2})
|
|
118
|
|
- self.assertTrue(expected in response.cookies['messages'].value)
|
|
|
120
|
+ self.assertTrue(expected in response.client.cookies['messages'].value)
|
|
119
|
121
|
|
|
120
|
122
|
|
|
121
|
123
|
class BasketReportTests(TestCase):
|
|
|
@@ -139,25 +141,23 @@ class BasketReportTests(TestCase):
|
|
139
|
141
|
generator.generate()
|
|
140
|
142
|
|
|
141
|
143
|
|
|
142
|
|
-class SavedBasketTests(TestCase):
|
|
|
144
|
+class SavedBasketTests(WebTestCase):
|
|
|
145
|
+ csrf_checks = False
|
|
143
|
146
|
|
|
144
|
147
|
def test_moving_from_saved_basket(self):
|
|
145
|
|
- user = User.objects.create_user(username='test', password='pass',
|
|
146
|
|
- email='test@example.com')
|
|
147
|
|
- client = Client()
|
|
148
|
|
- client.login(email=user.email, password='pass')
|
|
149
|
|
-
|
|
|
148
|
+ self.user = User.objects.create_user(username='test', password='pass',
|
|
|
149
|
+ email='test@example.com')
|
|
150
|
150
|
product = create_product(price=D('10.00'), num_in_stock=2)
|
|
151
|
151
|
basket = factories.create_basket(empty=True)
|
|
152
|
|
- basket.owner = user
|
|
|
152
|
+ basket.owner = self.user
|
|
153
|
153
|
basket.save()
|
|
154
|
154
|
add_product(basket, product=product)
|
|
155
|
155
|
|
|
156
|
|
- saved_basket, created = Basket.saved.get_or_create(owner=user)
|
|
|
156
|
+ saved_basket, created = Basket.saved.get_or_create(owner=self.user)
|
|
157
|
157
|
saved_basket.strategy = basket.strategy
|
|
158
|
158
|
add_product(saved_basket, product=product)
|
|
159
|
159
|
|
|
160
|
|
- response = client.get(reverse('basket:summary'))
|
|
|
160
|
+ response = self.get(reverse('basket:summary'))
|
|
161
|
161
|
saved_formset = response.context['saved_formset']
|
|
162
|
162
|
saved_form = saved_formset.forms[0]
|
|
163
|
163
|
|
|
|
@@ -168,25 +168,22 @@ class SavedBasketTests(TestCase):
|
|
168
|
168
|
saved_form.add_prefix('id'): saved_form.initial['id'],
|
|
169
|
169
|
saved_form.add_prefix('move_to_basket'): True,
|
|
170
|
170
|
}
|
|
171
|
|
- response = client.post(reverse('basket:saved'), data=data)
|
|
|
171
|
+ response = self.post(reverse('basket:saved'), params=data)
|
|
172
|
172
|
self.assertEqual(Basket.open.get(id=basket.id).lines.get(
|
|
173
|
173
|
product=product).quantity, 2)
|
|
174
|
174
|
self.assertRedirects(response, reverse('basket:summary'))
|
|
175
|
175
|
|
|
176
|
176
|
def test_moving_from_saved_basket_more_than_stocklevel_raises(self):
|
|
177
|
|
- user = User.objects.create_user(username='test', password='pass',
|
|
178
|
|
- email='test@example.com')
|
|
179
|
|
- client = Client()
|
|
180
|
|
- client.login(email=user.email, password='pass')
|
|
181
|
|
-
|
|
|
177
|
+ self.user = User.objects.create_user(username='test', password='pass',
|
|
|
178
|
+ email='test@example.com')
|
|
182
|
179
|
product = create_product(price=D('10.00'), num_in_stock=1)
|
|
183
|
|
- basket, created = Basket.open.get_or_create(owner=user)
|
|
|
180
|
+ basket, created = Basket.open.get_or_create(owner=self.user)
|
|
184
|
181
|
add_product(basket, product=product)
|
|
185
|
182
|
|
|
186
|
|
- saved_basket, created = Basket.saved.get_or_create(owner=user)
|
|
|
183
|
+ saved_basket, created = Basket.saved.get_or_create(owner=self.user)
|
|
187
|
184
|
add_product(saved_basket, product=product)
|
|
188
|
185
|
|
|
189
|
|
- response = client.get(reverse('basket:summary'))
|
|
|
186
|
+ response = self.get(reverse('basket:summary'))
|
|
190
|
187
|
saved_formset = response.context['saved_formset']
|
|
191
|
188
|
saved_form = saved_formset.forms[0]
|
|
192
|
189
|
|
|
|
@@ -197,7 +194,7 @@ class SavedBasketTests(TestCase):
|
|
197
|
194
|
saved_form.add_prefix('id'): saved_form.initial['id'],
|
|
198
|
195
|
saved_form.add_prefix('move_to_basket'): True,
|
|
199
|
196
|
}
|
|
200
|
|
- response = client.post(reverse('basket:saved'), data=data)
|
|
|
197
|
+ response = self.post(reverse('basket:saved'), params=data)
|
|
201
|
198
|
# we can't add more than stock level into basket
|
|
202
|
199
|
self.assertEqual(Basket.open.get(id=basket.id).lines.get(product=product).quantity, 1)
|
|
203
|
200
|
self.assertRedirects(response, reverse('basket:summary'))
|