Merge branch 'feature/establishment-tests-api-status' into 'develop'
Feature/establishment tests api status See merge request gm/gm-backend!13
This commit is contained in:
commit
a0ff8eae56
|
|
@ -34,7 +34,39 @@ class EstablishmentListCreateSerializer(EstablishmentBaseSerializer):
|
||||||
'type_id',
|
'type_id',
|
||||||
'type',
|
'type',
|
||||||
'socials',
|
'socials',
|
||||||
'image_url'
|
'image_url',
|
||||||
|
# TODO: check in admin filters
|
||||||
|
'is_publish'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class EstablishmentRUDSerializer(EstablishmentBaseSerializer):
|
||||||
|
"""Establishment create serializer"""
|
||||||
|
|
||||||
|
type_id = serializers.PrimaryKeyRelatedField(
|
||||||
|
source='establishment_type',
|
||||||
|
queryset=models.EstablishmentType.objects.all(), write_only=True
|
||||||
|
)
|
||||||
|
phones = ContactPhonesSerializer(read_only=False, many=True, )
|
||||||
|
emails = ContactEmailsSerializer(read_only=False, many=True, )
|
||||||
|
socials = SocialNetworkRelatedSerializers(read_only=False, many=True, )
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Establishment
|
||||||
|
fields = [
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'website',
|
||||||
|
'phones',
|
||||||
|
'emails',
|
||||||
|
'price_level',
|
||||||
|
'toque_number',
|
||||||
|
'type_id',
|
||||||
|
'type',
|
||||||
|
'socials',
|
||||||
|
'image_url',
|
||||||
|
# TODO: check in admin filters
|
||||||
|
'is_publish'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
|
import json
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
from account.models import User
|
from account.models import User
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from http.cookies import SimpleCookie
|
from http.cookies import SimpleCookie
|
||||||
from establishment.models import Employee
|
from main.models import Currency
|
||||||
|
from establishment.models import Establishment, EstablishmentType, Menu
|
||||||
|
|
||||||
# Create your tests here.
|
# Create your tests here.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -21,9 +24,41 @@ class BaseTestCase(APITestCase):
|
||||||
{'access_token': tokkens.get('access_token'),
|
{'access_token': tokkens.get('access_token'),
|
||||||
'refresh_token': tokkens.get('refresh_token')})
|
'refresh_token': tokkens.get('refresh_token')})
|
||||||
|
|
||||||
|
self.establishment_type = EstablishmentType.objects.create(name="Test establishment type")
|
||||||
|
|
||||||
|
|
||||||
|
class EstablishmentTests(BaseTestCase):
|
||||||
|
def test_establishment_CRUD(self):
|
||||||
|
response = self.client.get('/api/back/establishments/', format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'name': 'Test establishment',
|
||||||
|
'type_id': self.establishment_type.id,
|
||||||
|
'is_publish': True
|
||||||
|
}
|
||||||
|
|
||||||
|
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):
|
class EmployeeTests(BaseTestCase):
|
||||||
def test_employee_CRD(self):
|
def test_employee_CRUD(self):
|
||||||
response = self.client.get('/api/back/establishments/employees/', format='json')
|
response = self.client.get('/api/back/establishments/employees/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
@ -38,9 +73,191 @@ class EmployeeTests(BaseTestCase):
|
||||||
response = self.client.get('/api/back/establishments/employees/1/', format='json')
|
response = self.client.get('/api/back/establishments/employees/1/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
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')
|
response = self.client.delete('/api/back/establishments/employees/1/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
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
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# 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)
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ app_name = 'establishment'
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.EstablishmentListCreateView.as_view(), name='list'),
|
path('', views.EstablishmentListCreateView.as_view(), name='list'),
|
||||||
path('<int:pk>/', views.EstablishmentRetrieveView.as_view(), name='detail'),
|
path('<int:pk>/', views.EstablishmentRUDView.as_view(), name='detail'),
|
||||||
path('<int:pk>/schedule/<int:schedule_id>/', views.EstablishmentScheduleRUDView.as_view(),
|
path('<int:pk>/schedule/<int:schedule_id>/', views.EstablishmentScheduleRUDView.as_view(),
|
||||||
name='schedule-rud'),
|
name='schedule-rud'),
|
||||||
path('<int:pk>/schedule/', views.EstablishmentScheduleCreateView.as_view(),
|
path('<int:pk>/schedule/', views.EstablishmentScheduleCreateView.as_view(),
|
||||||
|
|
@ -17,7 +17,7 @@ urlpatterns = [
|
||||||
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
|
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
|
||||||
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'),
|
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'),
|
||||||
path('plates/', views.PlateListCreateView.as_view(), name='plates'),
|
path('plates/', views.PlateListCreateView.as_view(), name='plates'),
|
||||||
path('plates/<int:pk>/', views.PlateListCreateView.as_view(), name='plate-rud'),
|
path('plates/<int:pk>/', views.PlateRUDView.as_view(), name='plate-rud'),
|
||||||
path('socials/', views.SocialListCreateView.as_view(), name='socials'),
|
path('socials/', views.SocialListCreateView.as_view(), name='socials'),
|
||||||
path('socials/<int:pk>/', views.SocialRUDView.as_view(), name='social-rud'),
|
path('socials/<int:pk>/', views.SocialRUDView.as_view(), name='social-rud'),
|
||||||
path('phones/', views.PhonesListCreateView.as_view(), name='phones'),
|
path('phones/', views.PhonesListCreateView.as_view(), name='phones'),
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,11 @@ class EstablishmentListCreateView(EstablishmentMixin, generics.ListCreateAPIView
|
||||||
serializer_class = serializers.EstablishmentListCreateSerializer
|
serializer_class = serializers.EstablishmentListCreateSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
queryset = models.Establishment.objects.all()
|
||||||
|
serializer_class = serializers.EstablishmentRUDSerializer
|
||||||
|
|
||||||
|
|
||||||
class MenuListCreateView(generics.ListCreateAPIView):
|
class MenuListCreateView(generics.ListCreateAPIView):
|
||||||
"""Menu list create view."""
|
"""Menu list create view."""
|
||||||
serializer_class = serializers.MenuSerializers
|
serializer_class = serializers.MenuSerializers
|
||||||
|
|
@ -83,7 +88,8 @@ class EmployeeListCreateView(generics.ListCreateAPIView):
|
||||||
queryset = models.Employee.objects.all()
|
queryset = models.Employee.objects.all()
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
|
|
||||||
class EmployeeRUDView(generics.RetrieveDestroyAPIView):
|
|
||||||
|
class EmployeeRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Social RUD view."""
|
"""Social RUD view."""
|
||||||
serializer_class = serializers.EmployeeBackSerializers
|
serializer_class = serializers.EmployeeBackSerializers
|
||||||
queryset = models.Employee.objects.all()
|
queryset = models.Employee.objects.all()
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ class EstablishmentSimilarListView(EstablishmentListView):
|
||||||
return super().get_queryset().similar(establishment_pk=self.kwargs.get('pk'))\
|
return super().get_queryset().similar(establishment_pk=self.kwargs.get('pk'))\
|
||||||
.order_by('-total_mark')[:13]
|
.order_by('-total_mark')[:13]
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentRetrieveView(EstablishmentMixin, generics.RetrieveAPIView):
|
class EstablishmentRetrieveView(EstablishmentMixin, generics.RetrieveAPIView):
|
||||||
"""Resource for getting a establishment."""
|
"""Resource for getting a establishment."""
|
||||||
serializer_class = serializers.EstablishmentDetailSerializer
|
serializer_class = serializers.EstablishmentDetailSerializer
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user