255 lines
8.2 KiB
Python
255 lines
8.2 KiB
Python
import json
|
|
|
|
from rest_framework.test import APITestCase
|
|
from account.models import User
|
|
from rest_framework import status
|
|
from http.cookies import SimpleCookie
|
|
|
|
from location.models import City, Region, Country, Language
|
|
from django.contrib.gis.geos import Point
|
|
from account.models import Role, UserRole
|
|
|
|
class BaseTestCase(APITestCase):
|
|
|
|
def setUp(self):
|
|
self.username = 'sedragurda'
|
|
self.password = 'sedragurdaredips19'
|
|
self.email = 'sedragurda@desoz.com'
|
|
self.newsletter = True
|
|
self.user = User.objects.create_user(
|
|
username=self.username, email=self.email, password=self.password)
|
|
|
|
# get tokens
|
|
|
|
# self.user.is_superuser = True
|
|
# self.user.save()
|
|
|
|
tokkens = User.create_jwt_tokens(self.user)
|
|
self.client.cookies = SimpleCookie(
|
|
{'access_token': tokkens.get('access_token'),
|
|
'refresh_token': tokkens.get('refresh_token')})
|
|
|
|
self.lang = Language.objects.create(
|
|
title='Russia',
|
|
locale='ru-RU'
|
|
)
|
|
self.lang.save()
|
|
|
|
self.country_ru = Country.objects.create(
|
|
name='{"ru-RU":"Russia"}',
|
|
code='23',
|
|
low_price=15,
|
|
high_price=150000,
|
|
)
|
|
self.country_ru.languages.add(self.lang)
|
|
self.country_ru.save()
|
|
|
|
self.role = Role.objects.create(role=Role.COUNTRY_ADMIN,
|
|
country=self.country_ru)
|
|
self.role.save()
|
|
|
|
self.user_role = UserRole.objects.create(user=self.user, role=self.role)
|
|
|
|
self.user_role.save()
|
|
|
|
# role = Role.objects.create(role=Role.COUNTRY_ADMIN)
|
|
|
|
|
|
class CountryTests(BaseTestCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
|
|
def test_country_CRUD(self):
|
|
data = {
|
|
'name': {"ru-RU":"Russia"},
|
|
'code': 'test'
|
|
}
|
|
|
|
response = self.client.post('/api/back/location/countries/', data=data, format='json')
|
|
response_data = response.json()
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
country = Country.objects.get(pk=response_data["id"])
|
|
role = Role.objects.create(role=Role.COUNTRY_ADMIN, country=country)
|
|
role.save()
|
|
|
|
user_role = UserRole.objects.create(user=self.user, role=role)
|
|
|
|
user_role.save()
|
|
|
|
response = self.client.get('/api/back/location/countries/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.get(f'/api/back/location/countries/{response_data["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'name': json.dumps({"en-GB": "Test new country"})
|
|
}
|
|
|
|
response = self.client.patch(f'/api/back/location/countries/{response_data["id"]}/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete(f'/api/back/location/countries/{response_data["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class RegionTests(BaseTestCase):
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.country = Country.objects.create(
|
|
name=json.dumps({"en-GB": "Test country"}),
|
|
code="test"
|
|
)
|
|
|
|
role = Role.objects.create(role=Role.COUNTRY_ADMIN, country=self.country)
|
|
role.save()
|
|
|
|
user_role = UserRole.objects.create(user=self.user, role=role)
|
|
|
|
user_role.save()
|
|
|
|
|
|
def test_region_CRUD(self):
|
|
response = self.client.get('/api/back/location/regions/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'name': 'Test country',
|
|
'code': 'test',
|
|
'country_id': self.country.id
|
|
}
|
|
|
|
response = self.client.post('/api/back/location/regions/', data=data, format='json')
|
|
response_data = response.json()
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get(f'/api/back/location/regions/{response_data["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'name': json.dumps({"en-GB": "Test new country"})
|
|
}
|
|
|
|
response = self.client.patch(f'/api/back/location/regions/{response_data["id"]}/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete(f'/api/back/location/regions/{response_data["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class CityTests(BaseTestCase):
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
self.country = Country.objects.create(
|
|
name=json.dumps({"en-GB": "Test country"}),
|
|
code="test"
|
|
)
|
|
|
|
self.region = Region.objects.create(
|
|
name="Test region",
|
|
code="812",
|
|
country=self.country
|
|
)
|
|
|
|
role = Role.objects.create(role=Role.COUNTRY_ADMIN, country=self.country)
|
|
role.save()
|
|
|
|
user_role = UserRole.objects.create(user=self.user, role=role)
|
|
|
|
user_role.save()
|
|
|
|
def test_city_CRUD(self):
|
|
response = self.client.get('/api/back/location/cities/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'name': 'Test country',
|
|
'code': 'test',
|
|
'country_id': self.country.id,
|
|
'region_id': self.region.id
|
|
}
|
|
|
|
response = self.client.post('/api/back/location/cities/', data=data, format='json')
|
|
response_data = response.json()
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get(f'/api/back/location/cities/{response_data["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'name': json.dumps({"en-GB": "Test new country"})
|
|
}
|
|
|
|
response = self.client.patch(f'/api/back/location/cities/{response_data["id"]}/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete(f'/api/back/location/cities/{response_data["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class AddressTests(BaseTestCase):
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
|
|
self.country = Country.objects.create(
|
|
name=json.dumps({"en-GB": "Test country"}),
|
|
code="test"
|
|
)
|
|
|
|
self.region = Region.objects.create(
|
|
name="Test region",
|
|
code="812",
|
|
country=self.country
|
|
)
|
|
|
|
self.city = City.objects.create(
|
|
name="Test region",
|
|
code="812",
|
|
region=self.region,
|
|
country=self.country
|
|
)
|
|
|
|
role = Role.objects.create(role=Role.COUNTRY_ADMIN, country=self.country)
|
|
role.save()
|
|
|
|
user_role = UserRole.objects.create(user=self.user, role=role)
|
|
|
|
user_role.save()
|
|
|
|
def test_address_CRUD(self):
|
|
response = self.client.get('/api/back/location/addresses/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'city_id': self.city.id,
|
|
'number': '+79999999',
|
|
"latitude": 37.0625,
|
|
"longitude": -95.677068,
|
|
"geo_lon": -95.677068,
|
|
"geo_lat": 37.0625
|
|
}
|
|
|
|
response = self.client.post('/api/back/location/addresses/', data=data, format='json')
|
|
response_data = response.json()
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get(f'/api/back/location/addresses/{response_data["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'number': '+79999991'
|
|
}
|
|
|
|
response = self.client.patch(f'/api/back/location/addresses/{response_data["id"]}/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete(f'/api/back/location/addresses/{response_data["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|