|
|
@@ -4,7 +4,9 @@ from django.urls import reverse
|
|
4
|
4
|
|
|
5
|
5
|
from oscar.apps.basket import views
|
|
6
|
6
|
from oscar.test import factories
|
|
|
7
|
+from oscar.test.testcases import WebTestCase
|
|
7
|
8
|
from tests.fixtures import RequestFactory
|
|
|
9
|
+from tests.functional.checkout import CheckoutMixin
|
|
8
|
10
|
|
|
9
|
11
|
|
|
10
|
12
|
class TestVoucherAddView(TestCase):
|
|
|
@@ -109,3 +111,36 @@ class TestBasketSummaryView(TestCase):
|
|
109
|
111
|
request = RequestFactory().get(self.url)
|
|
110
|
112
|
view = views.BasketView(request=request)
|
|
111
|
113
|
self.assertIsNone(view.get_default_shipping_address())
|
|
|
114
|
+
|
|
|
115
|
+
|
|
|
116
|
+class TestVoucherViews(CheckoutMixin, WebTestCase):
|
|
|
117
|
+ csrf_checks = False
|
|
|
118
|
+
|
|
|
119
|
+ def setUp(self):
|
|
|
120
|
+ self.voucher = factories.create_voucher()
|
|
|
121
|
+ super().setUp()
|
|
|
122
|
+
|
|
|
123
|
+ def test_add_voucher(self):
|
|
|
124
|
+ """
|
|
|
125
|
+ Checks that voucher can be added to basket through appropriate view.
|
|
|
126
|
+ """
|
|
|
127
|
+ self.add_product_to_basket()
|
|
|
128
|
+
|
|
|
129
|
+ assert self.voucher.basket_set.count() == 0
|
|
|
130
|
+
|
|
|
131
|
+ response = self.post(reverse('basket:vouchers-add'), params={'code': self.voucher.code})
|
|
|
132
|
+ self.assertRedirectsTo(response, 'basket:summary')
|
|
|
133
|
+ assert self.voucher.basket_set.count() == 1
|
|
|
134
|
+
|
|
|
135
|
+ def test_remove_voucher(self):
|
|
|
136
|
+ """
|
|
|
137
|
+ Checks that voucher can be removed from basket through appropriate view.
|
|
|
138
|
+ """
|
|
|
139
|
+ self.add_product_to_basket()
|
|
|
140
|
+ self.add_voucher_to_basket(voucher=self.voucher)
|
|
|
141
|
+
|
|
|
142
|
+ assert self.voucher.basket_set.count() == 1
|
|
|
143
|
+
|
|
|
144
|
+ response = self.post(reverse('basket:vouchers-remove', kwargs={'pk': self.voucher.id}))
|
|
|
145
|
+ self.assertRedirectsTo(response, 'basket:summary')
|
|
|
146
|
+ assert self.voucher.basket_set.count() == 0
|