359 lines
13 KiB
Python
359 lines
13 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 main.models import Currency
|
|
from establishment.models import Establishment, EstablishmentType, Menu
|
|
# Create your tests here.
|
|
from translation.models import Language
|
|
|
|
|
|
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 tokkens
|
|
tokkens = User.create_jwt_tokens(self.user)
|
|
self.client.cookies = SimpleCookie(
|
|
{'access_token': tokkens.get('access_token'),
|
|
'refresh_token': tokkens.get('refresh_token')})
|
|
|
|
self.establishment_type = EstablishmentType.objects.create(name="Test establishment type")
|
|
|
|
# Create lang object
|
|
Language.objects.create(
|
|
title='English',
|
|
locale='en-GB'
|
|
)
|
|
|
|
|
|
class EstablishmentBTests(BaseTestCase):
|
|
def test_establishment_CRUD(self):
|
|
params = {'page': 1, 'page_size': 1,}
|
|
response = self.client.get('/api/back/establishments/', params, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'name': 'Test establishment',
|
|
'type_id': self.establishment_type.id,
|
|
'is_publish': True,
|
|
'slug': 'test-establishment-slug',
|
|
}
|
|
|
|
response = self.client.post('/api/back/establishments/', data=data, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
establishment = response.json()
|
|
|
|
response = self.client.get(f'/api/back/establishments/{establishment["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'name': 'Test new establishment'
|
|
}
|
|
|
|
response = self.client.patch(f'/api/back/establishments/{establishment["id"]}/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete(f'/api/back/establishments/{establishment["id"]}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class EmployeeTests(BaseTestCase):
|
|
def test_employee_CRUD(self):
|
|
response = self.client.get('/api/back/establishments/employees/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'user': self.user.id,
|
|
'name': 'Test name'
|
|
}
|
|
|
|
response = self.client.post('/api/back/establishments/employees/', data=data)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get('/api/back/establishments/employees/1/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'name': 'Test new name'
|
|
}
|
|
|
|
response = self.client.patch('/api/back/establishments/employees/1/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete('/api/back/establishments/employees/1/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
# Class to test childs
|
|
class ChildTestCase(BaseTestCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.establishment = Establishment.objects.create(
|
|
name="Test establishment",
|
|
establishment_type_id=self.establishment_type.id,
|
|
is_publish=True,
|
|
slug="test"
|
|
)
|
|
|
|
|
|
# Test childs
|
|
class EmailTests(ChildTestCase):
|
|
def test_email_CRUD(self):
|
|
response = self.client.get('/api/back/establishments/emails/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'email': "test@test.com",
|
|
'establishment': self.establishment.id
|
|
}
|
|
|
|
response = self.client.post('/api/back/establishments/emails/', data=data)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get('/api/back/establishments/emails/1/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'email': 'testnew@test.com'
|
|
}
|
|
|
|
response = self.client.patch('/api/back/establishments/emails/1/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete('/api/back/establishments/emails/1/')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class PhoneTests(ChildTestCase):
|
|
def test_phone_CRUD(self):
|
|
response = self.client.get('/api/back/establishments/phones/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'phone': "+79999999999",
|
|
'establishment': self.establishment.id
|
|
}
|
|
|
|
response = self.client.post('/api/back/establishments/phones/', data=data)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get('/api/back/establishments/phones/1/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'phone': '+79999999998'
|
|
}
|
|
|
|
response = self.client.patch('/api/back/establishments/phones/1/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete('/api/back/establishments/phones/1/')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class SocialTests(ChildTestCase):
|
|
def test_social_CRUD(self):
|
|
response = self.client.get('/api/back/establishments/socials/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'title': "Test social",
|
|
'url': 'https://testsocial.com',
|
|
'establishment': self.establishment.id
|
|
}
|
|
|
|
response = self.client.post('/api/back/establishments/socials/', data=data)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get('/api/back/establishments/socials/1/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'title': 'Test new social'
|
|
}
|
|
|
|
response = self.client.patch('/api/back/establishments/socials/1/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete('/api/back/establishments/socials/1/')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class PlateTests(ChildTestCase):
|
|
def test_plate_CRUD(self):
|
|
response = self.client.get('/api/back/establishments/plates/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
menu = Menu.objects.create(
|
|
category=json.dumps({"en-GB": "Test category"}),
|
|
establishment=self.establishment
|
|
)
|
|
currency = Currency.objects.create(name="Test currency")
|
|
|
|
data = {
|
|
'name': json.dumps({"en-GB": "Test plate"}),
|
|
'establishment': self.establishment.id,
|
|
'price': 10,
|
|
'menu': menu.id,
|
|
'currency_id': currency.id
|
|
}
|
|
|
|
response = self.client.post('/api/back/establishments/plates/', data=data)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get('/api/back/establishments/plates/1/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'name': json.dumps({"en-GB": "Test new plate"})
|
|
}
|
|
|
|
response = self.client.patch('/api/back/establishments/plates/1/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete('/api/back/establishments/plates/1/')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class MenuTests(ChildTestCase):
|
|
def test_menu_CRUD(self):
|
|
response = self.client.get('/api/back/establishments/menus/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'category': json.dumps({"en-GB": "Test category"}),
|
|
'establishment': self.establishment.id
|
|
}
|
|
|
|
response = self.client.post('/api/back/establishments/menus/', data=data)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get('/api/back/establishments/menus/1/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'category': json.dumps({"en-GB": "Test new category"})
|
|
}
|
|
|
|
response = self.client.patch('/api/back/establishments/menus/1/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete('/api/back/establishments/menus/1/')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class EstablishmentShedulerTests(ChildTestCase):
|
|
def test_shedule_CRUD(self):
|
|
data = {
|
|
'weekday': 1
|
|
}
|
|
response = self.client.post(f'/api/back/establishments/{self.establishment.id}/schedule/', data=data)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get(f'/api/back/establishments/{self.establishment.id}/schedule/1/')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'weekday': 2
|
|
}
|
|
|
|
response = self.client.patch(f'/api/back/establishments/{self.establishment.id}/schedule/1/', data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete(f'/api/back/establishments/{self.establishment.id}/schedule/1/')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
# Web tests
|
|
class EstablishmentWebTests(BaseTestCase):
|
|
|
|
def test_establishment_Read(self):
|
|
params = {'page': 1, 'page_size': 1,}
|
|
response = self.client.get('/api/web/establishments/', params, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
|
|
class EstablishmentWebTagTests(BaseTestCase):
|
|
|
|
def test_tag_Read(self):
|
|
response = self.client.get('/api/web/establishments/tags/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
|
|
class EstablishmentWebSlugTests(ChildTestCase):
|
|
|
|
def test_slug_Read(self):
|
|
response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
|
|
class EstablishmentWebSimilarTests(ChildTestCase):
|
|
|
|
def test_similar_Read(self):
|
|
response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/similar/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
|
|
class EstablishmentWebCommentsTests(ChildTestCase):
|
|
|
|
def test_comments_CRUD(self):
|
|
|
|
response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/comments/', format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
data = {
|
|
'text': 'test',
|
|
'user': self.user.id,
|
|
'mark': 4
|
|
}
|
|
|
|
response = self.client.post(f'/api/web/establishments/slug/{self.establishment.slug}/comments/create/',
|
|
data=data)
|
|
|
|
comment = response.json()
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/comments/{comment["id"]}/',
|
|
format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
update_data = {
|
|
'text': 'Test new establishment'
|
|
}
|
|
|
|
response = self.client.patch(f'/api/web/establishments/slug/{self.establishment.slug}/comments/{comment["id"]}/',
|
|
data=update_data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.delete(
|
|
f'/api/web/establishments/slug/{self.establishment.slug}/comments/{comment["id"]}/',
|
|
format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
|
|
|
|
|
class EstablishmentWebFavoriteTests(ChildTestCase):
|
|
|
|
def test_favorite_CR(self):
|
|
data = {
|
|
"user": self.user.id,
|
|
"object_id": self.establishment.id
|
|
}
|
|
|
|
response = self.client.post(f'/api/web/establishments/slug/{self.establishment.slug}/favorites/',
|
|
data=data)
|
|
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
|
|
response = self.client.delete(
|
|
f'/api/web/establishments/slug/{self.establishment.slug}/favorites/',
|
|
format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|