social choice api and test
This commit is contained in:
parent
b94a6dfd62
commit
e49d62de5d
|
|
@ -84,20 +84,29 @@ class EstablishmentRUDSerializer(EstablishmentBaseSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SocialChoiceSerializers(serializers.ModelSerializer):
|
||||||
|
"""SocialChoice serializers."""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.SocialChoice
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
class SocialNetworkSerializers(serializers.ModelSerializer):
|
class SocialNetworkSerializers(serializers.ModelSerializer):
|
||||||
"""Social network serializers."""
|
"""Social network serializers."""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.SocialNetwork
|
model = models.SocialNetwork
|
||||||
fields = [
|
fields = [
|
||||||
'id',
|
'id',
|
||||||
'establishment',
|
'establishment',
|
||||||
'title',
|
'network',
|
||||||
'url',
|
'url',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class PlatesSerializers(PlateSerializer):
|
class PlatesSerializers(PlateSerializer):
|
||||||
"""Social network serializers."""
|
"""Plates serializers."""
|
||||||
|
|
||||||
currency_id = serializers.PrimaryKeyRelatedField(
|
currency_id = serializers.PrimaryKeyRelatedField(
|
||||||
source='currency',
|
source='currency',
|
||||||
|
|
@ -116,7 +125,8 @@ class PlatesSerializers(PlateSerializer):
|
||||||
|
|
||||||
|
|
||||||
class ContactPhoneBackSerializers(PlateSerializer):
|
class ContactPhoneBackSerializers(PlateSerializer):
|
||||||
"""Social network serializers."""
|
"""ContactPhone serializers."""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ContactPhone
|
model = models.ContactPhone
|
||||||
fields = [
|
fields = [
|
||||||
|
|
@ -127,7 +137,8 @@ class ContactPhoneBackSerializers(PlateSerializer):
|
||||||
|
|
||||||
|
|
||||||
class ContactEmailBackSerializers(PlateSerializer):
|
class ContactEmailBackSerializers(PlateSerializer):
|
||||||
"""Social network serializers."""
|
"""ContactEmail serializers."""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.ContactEmail
|
model = models.ContactEmail
|
||||||
fields = [
|
fields = [
|
||||||
|
|
@ -140,8 +151,8 @@ class ContactEmailBackSerializers(PlateSerializer):
|
||||||
# TODO: test decorator
|
# TODO: test decorator
|
||||||
@with_base_attributes
|
@with_base_attributes
|
||||||
class EmployeeBackSerializers(serializers.ModelSerializer):
|
class EmployeeBackSerializers(serializers.ModelSerializer):
|
||||||
|
"""Employee serializers."""
|
||||||
|
|
||||||
"""Social network serializers."""
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Employee
|
model = models.Employee
|
||||||
fields = [
|
fields = [
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ class SocialNetworkRelatedSerializers(serializers.ModelSerializer):
|
||||||
model = models.SocialNetwork
|
model = models.SocialNetwork
|
||||||
fields = [
|
fields = [
|
||||||
'id',
|
'id',
|
||||||
'title',
|
'network',
|
||||||
'url',
|
'url',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ 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 main.models import Currency
|
from main.models import Currency
|
||||||
from establishment.models import Establishment, EstablishmentType, Menu
|
from establishment.models import Establishment, EstablishmentType, Menu, SocialChoice, SocialNetwork
|
||||||
# Create your tests here.
|
# Create your tests here.
|
||||||
from translation.models import Language
|
from translation.models import Language
|
||||||
from account.models import Role, UserRole
|
from account.models import Role, UserRole
|
||||||
|
|
@ -19,7 +19,11 @@ class BaseTestCase(APITestCase):
|
||||||
self.email = 'sedragurda@desoz.com'
|
self.email = 'sedragurda@desoz.com'
|
||||||
self.newsletter = True
|
self.newsletter = True
|
||||||
self.user = User.objects.create_user(
|
self.user = User.objects.create_user(
|
||||||
username=self.username, email=self.email, password=self.password)
|
username=self.username,
|
||||||
|
email=self.email,
|
||||||
|
password=self.password,
|
||||||
|
is_staff=True,
|
||||||
|
)
|
||||||
# get tokens
|
# get tokens
|
||||||
tokens = User.create_jwt_tokens(self.user)
|
tokens = User.create_jwt_tokens(self.user)
|
||||||
self.client.cookies = SimpleCookie(
|
self.client.cookies = SimpleCookie(
|
||||||
|
|
@ -30,13 +34,14 @@ class BaseTestCase(APITestCase):
|
||||||
name="Test establishment type")
|
name="Test establishment type")
|
||||||
|
|
||||||
# Create lang object
|
# Create lang object
|
||||||
self.lang = Language.objects.get(
|
self.lang = Language.objects.create(
|
||||||
title='Russia',
|
title='Russia',
|
||||||
locale='ru-RU'
|
locale='ru-RU'
|
||||||
)
|
)
|
||||||
|
|
||||||
self.country_ru = Country.objects.get(
|
self.country_ru = Country.objects.create(
|
||||||
name={"en-GB": "Russian"}
|
name={'en-GB': 'Russian'},
|
||||||
|
code='RU',
|
||||||
)
|
)
|
||||||
|
|
||||||
self.region = Region.objects.create(name='Moscow area', code='01',
|
self.region = Region.objects.create(name='Moscow area', code='01',
|
||||||
|
|
@ -72,10 +77,17 @@ class BaseTestCase(APITestCase):
|
||||||
establishment=self.establishment)
|
establishment=self.establishment)
|
||||||
self.user_role.save()
|
self.user_role.save()
|
||||||
|
|
||||||
|
self.social_choice = SocialChoice.objects.create(title='facebook')
|
||||||
|
self.social_network = SocialNetwork.objects.create(
|
||||||
|
network=self.social_choice,
|
||||||
|
url='https://testsocial.de',
|
||||||
|
establishment=self.establishment,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentBTests(BaseTestCase):
|
class EstablishmentBTests(BaseTestCase):
|
||||||
def test_establishment_CRUD(self):
|
def test_establishment_CRUD(self):
|
||||||
params = {'page': 1, 'page_size': 1,}
|
params = {'page': 1, 'page_size': 1, }
|
||||||
response = self.client.get('/api/back/establishments/', params, format='json')
|
response = self.client.get('/api/back/establishments/', params, format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
@ -108,7 +120,7 @@ class EstablishmentBTests(BaseTestCase):
|
||||||
|
|
||||||
class EmployeeTests(BaseTestCase):
|
class EmployeeTests(BaseTestCase):
|
||||||
def test_employee_CRUD(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)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
|
|
@ -205,13 +217,40 @@ class PhoneTests(ChildTestCase):
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
|
class SocialChoicesTests(ChildTestCase):
|
||||||
|
def test_social_choices_CRUD(self):
|
||||||
|
response = self.client.get('/api/back/establishments/social_choice/', format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'title': 'twitter',
|
||||||
|
}
|
||||||
|
|
||||||
|
response = self.client.post('/api/back/establishments/social_choice/', data=data)
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
response = self.client.get(f'/api/back/establishments/social_choice/{self.social_choice.id}/', format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
update_data = {
|
||||||
|
'title': 'vk'
|
||||||
|
}
|
||||||
|
|
||||||
|
response = self.client.patch(f'/api/back/establishments/social_choice/{self.social_choice.id}/',
|
||||||
|
data=update_data)
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
response = self.client.delete(f'/api/back/establishments/social_choice/{self.social_choice.id}/')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
class SocialTests(ChildTestCase):
|
class SocialTests(ChildTestCase):
|
||||||
def test_social_CRUD(self):
|
def test_social_CRUD(self):
|
||||||
response = self.client.get('/api/back/establishments/socials/', format='json')
|
response = self.client.get('/api/back/establishments/socials/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'title': "Test social",
|
'network': self.social_choice.id,
|
||||||
'url': 'https://testsocial.com',
|
'url': 'https://testsocial.com',
|
||||||
'establishment': self.establishment.id
|
'establishment': self.establishment.id
|
||||||
}
|
}
|
||||||
|
|
@ -219,17 +258,17 @@ class SocialTests(ChildTestCase):
|
||||||
response = self.client.post('/api/back/establishments/socials/', data=data)
|
response = self.client.post('/api/back/establishments/socials/', data=data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
response = self.client.get('/api/back/establishments/socials/1/', format='json')
|
response = self.client.get(f'/api/back/establishments/socials/{self.social_network.id}/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
update_data = {
|
update_data = {
|
||||||
'title': 'Test new social'
|
'url': 'https://newtestsocial.com'
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.patch('/api/back/establishments/socials/1/', data=update_data)
|
response = self.client.patch(f'/api/back/establishments/socials/{self.social_network.id}/', data=update_data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
response = self.client.delete('/api/back/establishments/socials/1/')
|
response = self.client.delete(f'/api/back/establishments/socials/{self.social_network.id}/')
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -322,7 +361,7 @@ class EstablishmentShedulerTests(ChildTestCase):
|
||||||
class EstablishmentWebTests(BaseTestCase):
|
class EstablishmentWebTests(BaseTestCase):
|
||||||
|
|
||||||
def test_establishment_Read(self):
|
def test_establishment_Read(self):
|
||||||
params = {'page': 1, 'page_size': 1,}
|
params = {'page': 1, 'page_size': 1, }
|
||||||
response = self.client.get('/api/web/establishments/', params, format='json')
|
response = self.client.get('/api/web/establishments/', params, format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
@ -351,7 +390,6 @@ class EstablishmentWebSimilarTests(ChildTestCase):
|
||||||
class EstablishmentWebCommentsTests(ChildTestCase):
|
class EstablishmentWebCommentsTests(ChildTestCase):
|
||||||
|
|
||||||
def test_comments_CRUD(self):
|
def test_comments_CRUD(self):
|
||||||
|
|
||||||
response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/comments/', format='json')
|
response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/comments/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
@ -375,8 +413,9 @@ class EstablishmentWebCommentsTests(ChildTestCase):
|
||||||
'text': 'Test new establishment'
|
'text': 'Test new establishment'
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.patch(f'/api/web/establishments/slug/{self.establishment.slug}/comments/{comment["id"]}/',
|
response = self.client.patch(
|
||||||
data=update_data)
|
f'/api/web/establishments/slug/{self.establishment.slug}/comments/{comment["id"]}/',
|
||||||
|
data=update_data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
response = self.client.delete(
|
response = self.client.delete(
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ from establishment import views
|
||||||
|
|
||||||
app_name = 'establishment'
|
app_name = 'establishment'
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.EstablishmentListCreateView.as_view(), name='list'),
|
path('', views.EstablishmentListCreateView.as_view(), name='list'),
|
||||||
path('<int:pk>/', views.EstablishmentRUDView.as_view(), name='detail'),
|
path('<int:pk>/', views.EstablishmentRUDView.as_view(), name='detail'),
|
||||||
|
|
@ -18,6 +17,8 @@ urlpatterns = [
|
||||||
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.PlateRUDView.as_view(), name='plate-rud'),
|
path('plates/<int:pk>/', views.PlateRUDView.as_view(), name='plate-rud'),
|
||||||
|
path('social_choice/', views.SocialChoiceListCreateView.as_view(), name='socials_choice'),
|
||||||
|
path('social_choice/<int:pk>/', views.SocialChoiceRUDView.as_view(), name='socials_choice-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'),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
"""Establishment app views."""
|
"""Establishment app views."""
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from rest_framework import generics
|
from rest_framework import generics, permissions
|
||||||
|
|
||||||
from utils.permissions import IsCountryAdmin, IsEstablishmentManager
|
from utils.permissions import IsCountryAdmin, IsEstablishmentManager
|
||||||
from establishment import filters, models, serializers
|
from establishment import filters, models, serializers
|
||||||
|
|
@ -27,7 +27,7 @@ class EstablishmentListCreateView(EstablishmentMixinViews, generics.ListCreateAP
|
||||||
class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
queryset = models.Establishment.objects.all()
|
queryset = models.Establishment.objects.all()
|
||||||
serializer_class = serializers.EstablishmentRUDSerializer
|
serializer_class = serializers.EstablishmentRUDSerializer
|
||||||
permission_classes = [IsCountryAdmin|IsEstablishmentManager]
|
permission_classes = [IsCountryAdmin | IsEstablishmentManager]
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentScheduleRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class EstablishmentScheduleRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
|
@ -72,12 +72,27 @@ class MenuRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
permission_classes = [IsEstablishmentManager]
|
permission_classes = [IsEstablishmentManager]
|
||||||
|
|
||||||
|
|
||||||
|
class SocialChoiceListCreateView(generics.ListCreateAPIView):
|
||||||
|
"""SocialChoice list create view."""
|
||||||
|
serializer_class = serializers.SocialChoiceSerializers
|
||||||
|
queryset = models.SocialChoice.objects.all()
|
||||||
|
pagination_class = None
|
||||||
|
permission_classes = [permissions.IsAdminUser]
|
||||||
|
|
||||||
|
|
||||||
|
class SocialChoiceRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
"""SocialChoice RUD view."""
|
||||||
|
serializer_class = serializers.SocialChoiceSerializers
|
||||||
|
queryset = models.SocialChoice.objects.all()
|
||||||
|
permission_classes = [permissions.IsAdminUser]
|
||||||
|
|
||||||
|
|
||||||
class SocialListCreateView(generics.ListCreateAPIView):
|
class SocialListCreateView(generics.ListCreateAPIView):
|
||||||
"""Social list create view."""
|
"""Social list create view."""
|
||||||
serializer_class = serializers.SocialNetworkSerializers
|
serializer_class = serializers.SocialNetworkSerializers
|
||||||
queryset = models.SocialNetwork.objects.all()
|
queryset = models.SocialNetwork.objects.all()
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
permission_classes = [IsEstablishmentManager]
|
permission_classes = [permissions.IsAdminUser]
|
||||||
|
|
||||||
|
|
||||||
class SocialRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class SocialRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
|
@ -96,14 +111,14 @@ class PlateListCreateView(generics.ListCreateAPIView):
|
||||||
|
|
||||||
|
|
||||||
class PlateRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class PlateRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Social RUD view."""
|
"""Plate RUD view."""
|
||||||
serializer_class = serializers.PlatesSerializers
|
serializer_class = serializers.PlatesSerializers
|
||||||
queryset = models.Plate.objects.all()
|
queryset = models.Plate.objects.all()
|
||||||
permission_classes = [IsEstablishmentManager]
|
permission_classes = [IsEstablishmentManager]
|
||||||
|
|
||||||
|
|
||||||
class PhonesListCreateView(generics.ListCreateAPIView):
|
class PhonesListCreateView(generics.ListCreateAPIView):
|
||||||
"""Plate list create view."""
|
"""Phones list create view."""
|
||||||
serializer_class = serializers.ContactPhoneBackSerializers
|
serializer_class = serializers.ContactPhoneBackSerializers
|
||||||
queryset = models.ContactPhone.objects.all()
|
queryset = models.ContactPhone.objects.all()
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
|
|
@ -111,14 +126,14 @@ class PhonesListCreateView(generics.ListCreateAPIView):
|
||||||
|
|
||||||
|
|
||||||
class PhonesRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class PhonesRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Social RUD view."""
|
"""Phones RUD view."""
|
||||||
serializer_class = serializers.ContactPhoneBackSerializers
|
serializer_class = serializers.ContactPhoneBackSerializers
|
||||||
queryset = models.ContactPhone.objects.all()
|
queryset = models.ContactPhone.objects.all()
|
||||||
permission_classes = [IsEstablishmentManager]
|
permission_classes = [IsEstablishmentManager]
|
||||||
|
|
||||||
|
|
||||||
class EmailListCreateView(generics.ListCreateAPIView):
|
class EmailListCreateView(generics.ListCreateAPIView):
|
||||||
"""Plate list create view."""
|
"""Email list create view."""
|
||||||
serializer_class = serializers.ContactEmailBackSerializers
|
serializer_class = serializers.ContactEmailBackSerializers
|
||||||
queryset = models.ContactEmail.objects.all()
|
queryset = models.ContactEmail.objects.all()
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
|
|
@ -126,7 +141,7 @@ class EmailListCreateView(generics.ListCreateAPIView):
|
||||||
|
|
||||||
|
|
||||||
class EmailRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class EmailRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Social RUD view."""
|
"""Email RUD view."""
|
||||||
serializer_class = serializers.ContactEmailBackSerializers
|
serializer_class = serializers.ContactEmailBackSerializers
|
||||||
queryset = models.ContactEmail.objects.all()
|
queryset = models.ContactEmail.objects.all()
|
||||||
permission_classes = [IsEstablishmentManager]
|
permission_classes = [IsEstablishmentManager]
|
||||||
|
|
@ -140,7 +155,7 @@ class EmployeeListCreateView(generics.ListCreateAPIView):
|
||||||
|
|
||||||
|
|
||||||
class EmployeeRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class EmployeeRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Social RUD view."""
|
"""Employee RUD view."""
|
||||||
serializer_class = serializers.EmployeeBackSerializers
|
serializer_class = serializers.EmployeeBackSerializers
|
||||||
queryset = models.Employee.objects.all()
|
queryset = models.Employee.objects.all()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user