|
|
@@ -145,6 +145,63 @@ class BasketReportTests(TestCase):
|
|
145
|
145
|
class SavedBasketTests(WebTestCase):
|
|
146
|
146
|
csrf_checks = False
|
|
147
|
147
|
|
|
|
148
|
+ def test_moving_to_saved_basket_creates_new(self):
|
|
|
149
|
+ self.user = factories.UserFactory()
|
|
|
150
|
+ product = factories.ProductFactory()
|
|
|
151
|
+ basket = factories.BasketFactory(owner=self.user)
|
|
|
152
|
+ basket.add_product(product)
|
|
|
153
|
+
|
|
|
154
|
+ response = self.get(reverse('basket:summary'))
|
|
|
155
|
+ formset = response.context['formset']
|
|
|
156
|
+ form = formset.forms[0]
|
|
|
157
|
+
|
|
|
158
|
+ data = {
|
|
|
159
|
+ formset.add_prefix('INITIAL_FORMS'): 1,
|
|
|
160
|
+ formset.add_prefix('TOTAL_FORMS'): 1,
|
|
|
161
|
+ formset.add_prefix('MIN_FORMS'): 0,
|
|
|
162
|
+ formset.add_prefix('MAX_NUM_FORMS'): 1,
|
|
|
163
|
+ form.add_prefix('id'): form.instance.pk,
|
|
|
164
|
+ form.add_prefix('quantity'): form.initial['quantity'],
|
|
|
165
|
+ form.add_prefix('save_for_later'): True,
|
|
|
166
|
+ }
|
|
|
167
|
+ response = self.post(reverse('basket:summary'), params=data)
|
|
|
168
|
+
|
|
|
169
|
+ self.assertRedirects(response, reverse('basket:summary'))
|
|
|
170
|
+ self.assertFalse(Basket.open.get(pk=basket.pk).lines.exists())
|
|
|
171
|
+ self.assertEqual(Basket.saved.get(owner=self.user).lines.get(
|
|
|
172
|
+ product=product).quantity, 1)
|
|
|
173
|
+
|
|
|
174
|
+ def test_moving_to_saved_basket_updates_existing(self):
|
|
|
175
|
+ self.user = factories.UserFactory()
|
|
|
176
|
+ product = factories.ProductFactory()
|
|
|
177
|
+
|
|
|
178
|
+ basket = factories.BasketFactory(owner=self.user)
|
|
|
179
|
+ basket.add_product(product)
|
|
|
180
|
+
|
|
|
181
|
+ saved_basket = factories.BasketFactory(owner=self.user,
|
|
|
182
|
+ status=Basket.SAVED)
|
|
|
183
|
+ saved_basket.add_product(product)
|
|
|
184
|
+
|
|
|
185
|
+ response = self.get(reverse('basket:summary'))
|
|
|
186
|
+ formset = response.context['formset']
|
|
|
187
|
+ form = formset.forms[0]
|
|
|
188
|
+
|
|
|
189
|
+ data = {
|
|
|
190
|
+ formset.add_prefix('INITIAL_FORMS'): 1,
|
|
|
191
|
+ formset.add_prefix('TOTAL_FORMS'): 1,
|
|
|
192
|
+ formset.add_prefix('MIN_FORMS'): 0,
|
|
|
193
|
+ formset.add_prefix('MAX_NUM_FORMS'): 1,
|
|
|
194
|
+ form.add_prefix('id'): form.instance.pk,
|
|
|
195
|
+ form.add_prefix('quantity'): form.initial['quantity'],
|
|
|
196
|
+ form.add_prefix('save_for_later'): True,
|
|
|
197
|
+ }
|
|
|
198
|
+ response = self.post(reverse('basket:summary'), params=data)
|
|
|
199
|
+
|
|
|
200
|
+ self.assertRedirects(response, reverse('basket:summary'))
|
|
|
201
|
+ self.assertFalse(Basket.open.get(pk=basket.pk).lines.exists())
|
|
|
202
|
+ self.assertEqual(Basket.saved.get(pk=saved_basket.pk).lines.get(
|
|
|
203
|
+ product=product).quantity, 2)
|
|
|
204
|
+
|
|
148
|
205
|
def test_moving_from_saved_basket(self):
|
|
149
|
206
|
self.user = User.objects.create_user(username='test', password='pass',
|
|
150
|
207
|
email='test@example.com')
|