social choice api and test

This commit is contained in:
alex 2019-11-14 09:53:36 +03:00
parent b94a6dfd62
commit e49d62de5d
5 changed files with 98 additions and 32 deletions

View File

@ -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 = [

View File

@ -39,7 +39,7 @@ class SocialNetworkRelatedSerializers(serializers.ModelSerializer):
model = models.SocialNetwork
fields = [
'id',
'title',
'network',
'url',
]

View File

@ -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(

View File

@ -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'),

View File

@ -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()