You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
6.4 KiB
201 lines
6.4 KiB
from django.urls import reverse
|
|
from rest_framework import status
|
|
from rest_framework.test import APITestCase
|
|
|
|
|
|
class ProvidersCreateTests(APITestCase):
|
|
endpoint = reverse('provider-list')
|
|
|
|
def test_providers_create_success(self):
|
|
payload = {
|
|
'currency': 'USD',
|
|
'email': 'nicolas@email.com',
|
|
'language': 'EN',
|
|
'name': 'Test',
|
|
'phone_number': '+34685061901'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response_data = response.json()
|
|
for field in payload.keys():
|
|
self.assertIn(field, response_data)
|
|
self.assertEqual(payload[field], response_data[field])
|
|
|
|
self.assertIn('id', response_data)
|
|
self.assertIn('timestamp', response_data)
|
|
|
|
# failure tests
|
|
|
|
def test_providers_create_failure_missing_field_currency(self):
|
|
payload = {
|
|
'email': 'nicolas@email.com',
|
|
'language': 'EN',
|
|
'name': 'Test',
|
|
'phone_number': '+34685061901'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
self.assertIn('currency', response_data)
|
|
self.assertEqual(response_data['currency'][0], 'This field is required.')
|
|
|
|
def test_providers_create_failure_missing_field_email(self):
|
|
payload = {
|
|
'currency': 'USD',
|
|
'language': 'EN',
|
|
'name': 'Test',
|
|
'phone_number': '+34685061901'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
self.assertIn('email', response_data)
|
|
self.assertEqual(response_data['email'][0], 'This field is required.')
|
|
|
|
def test_providers_create_failure_missing_field_language(self):
|
|
payload = {
|
|
'currency': 'USD',
|
|
'email': 'nicolas@email.com',
|
|
'name': 'Test',
|
|
'phone_number': '+34685061901'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
self.assertIn('language', response_data)
|
|
self.assertEqual(response_data['language'][0], 'This field is required.')
|
|
|
|
def test_providers_create_failure_missing_field_name(self):
|
|
payload = {
|
|
'currency': 'USD',
|
|
'email': 'nicolas@email.com',
|
|
'language': 'EN',
|
|
'phone_number': '+34685061901'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
self.assertIn('name', response_data)
|
|
self.assertEqual(response_data['name'][0], 'This field is required.')
|
|
|
|
def test_providers_create_failure_missing_field_phone_number(self):
|
|
payload = {
|
|
'currency': 'USD',
|
|
'email': 'nicolas@email.com',
|
|
'language': 'EN',
|
|
'name': 'Test'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
self.assertIn('phone_number', response_data)
|
|
self.assertEqual(response_data['phone_number'][0], 'This field is required.')
|
|
|
|
def test_providers_create_failure_invalid_currency(self):
|
|
payload = {
|
|
'currency': '55',
|
|
'email': 'nicolas@email.com',
|
|
'language': 'EN',
|
|
'name': 'Test',
|
|
'phone_number': '+34685061901'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
self.assertIn('currency', response_data)
|
|
self.assertEqual(response_data['currency'][0], f'Invalid value for currency: {payload["currency"]}.')
|
|
|
|
def test_providers_create_failure_invalid_email(self):
|
|
payload = {
|
|
'currency': 'USD',
|
|
'email': 'nicolasemail.com',
|
|
'language': 'EN',
|
|
'name': 'Test',
|
|
'phone_number': '+34685061901'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
self.assertIn('email', response_data)
|
|
self.assertEqual(response_data['email'][0], 'Enter a valid email address.')
|
|
|
|
def test_providers_create_failure_invalid_language(self):
|
|
payload = {
|
|
'currency': 'USD',
|
|
'email': 'nicolas@email.com',
|
|
'language': 'T',
|
|
'name': 'Test',
|
|
'phone_number': '+34685061901'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
self.assertIn('language', response_data)
|
|
self.assertEqual(response_data['language'][0], f'Invalid value for language: {payload["language"]}.')
|
|
|
|
def test_providers_create_failure_invalid_phone_number(self):
|
|
payload = {
|
|
'currency': 'USD',
|
|
'email': 'nicolas@email.com',
|
|
'language': 'EN',
|
|
'name': 'Test',
|
|
'phone_number': 'invalid_phone'
|
|
}
|
|
|
|
response = self.client.post(
|
|
self.endpoint,
|
|
payload,
|
|
format='json'
|
|
)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
response_data = response.json()
|
|
|
|
self.assertIn('phone_number', response_data)
|
|
self.assertEqual(response_data['phone_number'][0], 'The phone number entered is not valid.')
|