Skip to content

Commit 2a21639

Browse files
test(business): Add some tests.
- Add tests for validation of the country parameter - Add test for support of both formats of the country parameter - Remove company creation in test_create
1 parent 5b3e4e1 commit 2a21639

File tree

4 files changed

+43
-38
lines changed

4 files changed

+43
-38
lines changed

promo_code/business/tests/promocodes/base.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ def setUpTestData(cls):
2323
'password': 'SecurePass123!',
2424
}
2525
business.models.Company.objects.create_company(
26-
name=cls.valid_data['name'],
26+
**cls.valid_data,
27+
)
28+
29+
cls.company = business.models.Company.objects.get(
2730
email=cls.valid_data['email'],
28-
password=cls.valid_data['password'],
2931
)
3032

3133
response = cls.client.post(

promo_code/business/tests/promocodes/operations/test_list.py

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import parameterized
12
import rest_framework.status
23
import rest_framework.test
34

@@ -31,26 +32,6 @@ def _create_additional_promo(self):
3132
def setUpTestData(cls):
3233
business.tests.promocodes.base.BasePromoCreateTestCase.setUpTestData()
3334

34-
cls.valid_data = {
35-
'name': 'New Digital Marketing Solutions Inc.',
36-
'email': '[email protected]',
37-
'password': 'SecurePass123!',
38-
}
39-
40-
cls.company = business.models.Company.objects.create_company(
41-
**cls.valid_data,
42-
)
43-
44-
response = cls.client.post(
45-
cls.signin_url,
46-
{
47-
'email': cls.valid_data['email'],
48-
'password': cls.valid_data['password'],
49-
},
50-
format='json',
51-
)
52-
cls.new_token = response.data['access']
53-
5435
cls.promo1_data = {
5536
'description': 'Increased cashback 10% for new bank customers!',
5637
'image_url': 'https://cdn2.thecatapi.com/images/3lo.jpg',
@@ -113,7 +94,7 @@ def setUpTestData(cls):
11394

11495
def setUp(self):
11596
self.client = rest_framework.test.APIClient()
116-
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.new_token)
97+
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.token)
11798

11899
def test_get_promos_without_token(self):
119100
client = rest_framework.test.APIClient()
@@ -311,3 +292,29 @@ def test_get_promos_filter_kz_sort_active_until(self):
311292

312293
self.assertEqual(len(data), 2)
313294
self.assertEqual(response.get('X-Total-Count'), '2')
295+
296+
@parameterized.parameterized.expand(
297+
[
298+
('comma_separated', {'country': 'gb,FR'}, 3),
299+
('multiple_params', {'country': ['gb', 'FR']}, 3),
300+
],
301+
)
302+
def test_country_parameter_formats(self, _, params, expected_count):
303+
full_params = {
304+
**params,
305+
'sort_by': 'active_from',
306+
'limit': 10,
307+
}
308+
309+
response = self.client.get(self.promo_list_url, full_params)
310+
self.assertEqual(
311+
response.status_code,
312+
rest_framework.status.HTTP_200_OK,
313+
)
314+
data = response.data
315+
316+
self.assertEqual(len(data), expected_count)
317+
self.assertEqual(data[0]['promo_id'], str(self.created_promos[1].id))
318+
self.assertEqual(data[1]['promo_id'], str(self.created_promos[0].id))
319+
self.assertEqual(data[2]['promo_id'], str(self.created_promos[2].id))
320+
self.assertEqual(response['X-Total-Count'], str(expected_count))

promo_code/business/tests/promocodes/validations/test_create_validation.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@
77
class TestPromoCodeCreation(
88
business.tests.promocodes.base.BasePromoCreateTestCase,
99
):
10+
11+
def setUp(self):
12+
super().setUp()
13+
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.token)
14+
1015
def test_create_promo_with_old_token(self):
16+
self.client.credentials()
1117
registration_data = {
1218
'name': 'Someone',
1319
'email': '[email protected]',
@@ -92,7 +98,6 @@ def test_missing_fields(self, name, payload):
9298
self.promo_create_url,
9399
payload,
94100
format='json',
95-
HTTP_AUTHORIZATION='Bearer ' + self.token,
96101
)
97102
self.assertEqual(
98103
response.status_code,
@@ -113,7 +118,6 @@ def test_invalid_mode(self):
113118
self.promo_create_url,
114119
payload,
115120
format='json',
116-
HTTP_AUTHORIZATION='Bearer ' + self.token,
117121
)
118122
self.assertEqual(
119123
response.status_code,
@@ -134,7 +138,6 @@ def test_invalid_max_count_for_unique_mode(self):
134138
self.promo_create_url,
135139
payload,
136140
format='json',
137-
HTTP_AUTHORIZATION='Bearer ' + self.token,
138141
)
139142
self.assertEqual(
140143
response.status_code,
@@ -154,7 +157,6 @@ def test_short_description(self):
154157
self.promo_create_url,
155158
payload,
156159
format='json',
157-
HTTP_AUTHORIZATION='Bearer ' + self.token,
158160
)
159161
self.assertEqual(
160162
response.status_code,
@@ -179,7 +181,6 @@ def test_invalid_country(self, invalid_country):
179181
self.promo_create_url,
180182
payload,
181183
format='json',
182-
HTTP_AUTHORIZATION='Bearer ' + self.token,
183184
)
184185
self.assertEqual(
185186
response.status_code,
@@ -199,7 +200,6 @@ def test_nonexistent_country(self):
199200
self.promo_create_url,
200201
payload,
201202
format='json',
202-
HTTP_AUTHORIZATION='Bearer ' + self.token,
203203
)
204204
self.assertEqual(
205205
response.status_code,
@@ -222,7 +222,6 @@ def test_invalid_age_range(self):
222222
self.promo_create_url,
223223
payload,
224224
format='json',
225-
HTTP_AUTHORIZATION='Bearer ' + self.token,
226225
)
227226
self.assertEqual(
228227
response.status_code,
@@ -242,7 +241,6 @@ def test_common_with_promo_unique_provided(self):
242241
self.promo_create_url,
243242
payload,
244243
format='json',
245-
HTTP_AUTHORIZATION='Bearer ' + self.token,
246244
)
247245
self.assertEqual(
248246
response.status_code,
@@ -262,7 +260,6 @@ def test_unique_with_promo_common_provided(self):
262260
self.promo_create_url,
263261
payload,
264262
format='json',
265-
HTTP_AUTHORIZATION='Bearer ' + self.token,
266263
)
267264
self.assertEqual(
268265
response.status_code,
@@ -283,7 +280,6 @@ def test_both_promo_common_and_promo_unique_provided(self):
283280
self.promo_create_url,
284281
payload,
285282
format='json',
286-
HTTP_AUTHORIZATION='Bearer ' + self.token,
287283
)
288284
self.assertEqual(
289285
response.status_code,
@@ -303,7 +299,6 @@ def test_too_short_promo_common(self):
303299
self.promo_create_url,
304300
payload,
305301
format='json',
306-
HTTP_AUTHORIZATION='Bearer ' + self.token,
307302
)
308303
self.assertEqual(
309304
response.status_code,
@@ -358,7 +353,6 @@ def test_invalid_type_payloads(self, name, payload):
358353
self.promo_create_url,
359354
payload,
360355
format='json',
361-
HTTP_AUTHORIZATION='Bearer ' + self.token,
362356
)
363357
self.assertEqual(
364358
response.status_code,
@@ -384,7 +378,6 @@ def test_invalid_max_count(self, max_count):
384378
self.promo_create_url,
385379
payload,
386380
format='json',
387-
HTTP_AUTHORIZATION='Bearer ' + self.token,
388381
)
389382
self.assertEqual(
390383
response.status_code,
@@ -413,7 +406,6 @@ def test_invalid_image_url(self, url):
413406
self.promo_create_url,
414407
payload,
415408
format='json',
416-
HTTP_AUTHORIZATION='Bearer ' + self.token,
417409
)
418410
self.assertEqual(
419411
response.status_code,

promo_code/business/tests/promocodes/validations/test_list_validation.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import business.tests.promocodes.base
55

66

7-
class CompanyPromoFetchTests(
7+
class TestPromoCodeList(
88
business.tests.promocodes.base.BasePromoCreateTestCase,
99
):
1010

@@ -20,6 +20,10 @@ def setUp(self):
2020
),
2121
('invalid_country_format_single', {'country': 'france'}),
2222
('invalid_country_format_multiple', {'country': 'gb,us,france'}),
23+
('invalid_country_does_not_exist', {'country': 'xx'}),
24+
('invalid_country_too_short', {'country': 'F'}),
25+
('invalid_country_format', {'country': 10}),
26+
('invalid_country_empty_string', {'country': ''}),
2327
('unexpected_parameter', {'unexpected': 'value'}),
2428
(
2529
'combined_invalid_parameters',

0 commit comments

Comments
 (0)