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