diff --git a/.gitignore b/.gitignore index 9cb2b74f..78187ac0 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,5 @@ logs/ ./docker-compose.override.yml celerybeat-schedule -local_files \ No newline at end of file +local_files +celerybeat.pid diff --git a/apps/partner/serializers/back.py b/apps/partner/serializers/back.py new file mode 100644 index 00000000..94a7c4b9 --- /dev/null +++ b/apps/partner/serializers/back.py @@ -0,0 +1,9 @@ +"""Back account serializers""" +from rest_framework import serializers +from partner.models import Partner + + +class BackPartnerSerializer(serializers.ModelSerializer): + class Meta: + model = Partner + fields = '__all__' diff --git a/apps/partner/tests.py b/apps/partner/tests.py index 494e7f7e..97931a8a 100644 --- a/apps/partner/tests.py +++ b/apps/partner/tests.py @@ -1,16 +1,94 @@ # Create your tests here. -from rest_framework.test import APITestCase +from http.cookies import SimpleCookie + from rest_framework import status +from rest_framework.test import APITestCase +from account.models import User, Role, UserRole +from establishment.models import EstablishmentType, Establishment +from location.models import Country, Region, City, Address from partner.models import Partner +from translation.models import Language -class PartnerTestCase(APITestCase): +class BaseTestCase(APITestCase): def setUp(self): - self.test_url = "www.example.com" - self.test_partner = Partner.objects.create(url=self.test_url) + self.username = 'test_user' + self.password = 'test_user_password' + self.email = 'test_user@mail.com' + self.user = User.objects.create_user( + username=self.username, + email=self.email, + password=self.password, + is_staff=True, + ) + + tokens = User.create_jwt_tokens(self.user) + self.client.cookies = SimpleCookie({ + 'access_token': tokens.get('access_token'), + 'refresh_token': tokens.get('refresh_token'), + }) + + self.establishment_type = EstablishmentType.objects.create(name="Test establishment type") + self.role = Role.objects.create(role=Role.ESTABLISHMENT_MANAGER) + + self.establishment = Establishment.objects.create( + name="Test establishment", + establishment_type_id=self.establishment_type.id, + is_publish=True, + slug="test", + ) + + self.user_role = UserRole.objects.create( + user=self.user, + role=self.role, + establishment=self.establishment, + ) + + self.partner = Partner.objects.create( + url='www.ya.ru', + establishment=self.establishment, + ) + + +class PartnerWebTestCase(BaseTestCase): def test_partner_list(self): response = self.client.get("/api/web/partner/") self.assertEqual(response.status_code, status.HTTP_200_OK) + + +class PartnerBackTestCase(BaseTestCase): + + def test_partner_list(self): + response = self.client.get('/api/back/partner/') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + # def test_partner_post(self): + # test_inquiry = { + # 'review': self.test_review.pk, + # 'author': self.user.pk, + # 'comment': 'New test comment', + # } + # response = self.client.post('/api/back/partner/', data=test_inquiry) + # self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + def test_partner_detail(self): + response = self.client.get(f'/api/back/partner/{self.partner.id}/') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + # def test_partner_detail_put(self): + # data = { + # 'id': self.test_inquiry.id, + # 'review': self.test_review.pk, + # 'author': self.user.pk, + # 'comment': 'New test comment 2', + # } + # + # response = self.client.put(f'/api/back/partner/{self.partner.id}/', data=data) + # self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_partner_delete(self): + response = self.client.get(f'/api/back/partner/{self.partner.id}/') + self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/apps/partner/urls/back.py b/apps/partner/urls/back.py new file mode 100644 index 00000000..27de2731 --- /dev/null +++ b/apps/partner/urls/back.py @@ -0,0 +1,11 @@ +"""Back account URLs""" +from django.urls import path + +from partner.views import back as views + +app_name = 'partner' + +urlpatterns = [ + path('', views.PartnerLstView.as_view(), name='partner-list-create'), + path('/', views.PartnerRUDView.as_view(), name='partner-rud'), +] diff --git a/apps/partner/views/back.py b/apps/partner/views/back.py new file mode 100644 index 00000000..e0727a7c --- /dev/null +++ b/apps/partner/views/back.py @@ -0,0 +1,27 @@ +from django_filters.rest_framework import DjangoFilterBackend, filters +from rest_framework import generics, permissions + +from partner.models import Partner +from partner.serializers import back as serializers +from utils.permissions import IsEstablishmentManager + + +class PartnerLstView(generics.ListCreateAPIView): + """Partner list create view.""" + queryset = Partner.objects.all() + serializer_class = serializers.BackPartnerSerializer + permission_classes = [permissions.IsAdminUser | IsEstablishmentManager] + filter_backends = (DjangoFilterBackend, filters.OrderingFilter) + ordering_fields = '__all__' + filterset_fields = ( + 'establishment', + 'type', + ) + + +class PartnerRUDView(generics.RetrieveUpdateDestroyAPIView): + """Partner RUD view.""" + queryset = Partner.objects.all() + serializer_class = serializers.BackPartnerSerializer + permission_classes = [permissions.IsAdminUser | IsEstablishmentManager] + lookup_field = 'id' diff --git a/apps/partner/views/views.py b/apps/partner/views/views.py deleted file mode 100644 index 60f00ef0..00000000 --- a/apps/partner/views/views.py +++ /dev/null @@ -1 +0,0 @@ -# Create your views here.