diff --git a/apps/establishment/models.py b/apps/establishment/models.py index 5391d066..f89495e2 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -138,6 +138,9 @@ class EstablishmentQuerySet(models.QuerySet): public_mark__isnull=False) if establishment_qs.exists(): establishment = establishment_qs.first() + + # TODO fix error: + # AttributeError: 'NoneType' object has no attribute 'coordinates' return self.exclude(slug=establishment_slug) \ .filter(is_publish=True, image_url__isnull=False, diff --git a/apps/establishment/tests.py b/apps/establishment/tests.py index e4e3b02c..90a8f80c 100644 --- a/apps/establishment/tests.py +++ b/apps/establishment/tests.py @@ -27,7 +27,7 @@ class BaseTestCase(APITestCase): self.establishment_type = EstablishmentType.objects.create(name="Test establishment type") -class EstablishmentTests(BaseTestCase): +class EstablishmentBTests(BaseTestCase): def test_establishment_CRUD(self): params = {'page': 1, 'page_size': 1,} response = self.client.get('/api/back/establishments/', params, format='json') @@ -93,7 +93,8 @@ class ChildTestCase(BaseTestCase): self.establishment = Establishment.objects.create( name="Test establishment", establishment_type_id=self.establishment_type.id, - is_publish=True + is_publish=True, + slug="test" ) @@ -263,3 +264,89 @@ class EstablishmentShedulerTests(ChildTestCase): response = self.client.delete(f'/api/back/establishments/{self.establishment.id}/schedule/1/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) + + +# Web tests +class EstablishmentWebTests(BaseTestCase): + + def test_establishment_Read(self): + 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) + + +class EstablishmentWebTagTests(BaseTestCase): + + def test_tag_Read(self): + response = self.client.get('/api/web/establishments/tags/', format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + +class EstablishmentWebSlugTests(ChildTestCase): + + def test_slug_Read(self): + response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/', format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + +class EstablishmentWebSimilarTests(ChildTestCase): + + def test_similar_Read(self): + response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/similar/', format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + +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) + + data = { + 'text': 'test', + 'user': self.user.id, + 'mark': 4 + } + + response = self.client.post(f'/api/web/establishments/slug/{self.establishment.slug}/comments/create/', + data=data) + + comment = response.json() + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + response = self.client.get(f'/api/web/establishments/slug/{self.establishment.slug}/comments/{comment["id"]}/', + format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) + + update_data = { + 'text': 'Test new establishment' + } + + 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( + f'/api/web/establishments/slug/{self.establishment.slug}/comments/{comment["id"]}/', + format='json') + self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) + + +class EstablishmentWebFavoriteTests(ChildTestCase): + + def test_favorite_CR(self): + data = { + "user": self.user.id, + "object_id": self.establishment.id + } + + response = self.client.post(f'/api/web/establishments/slug/{self.establishment.slug}/favorites/', + data=data) + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + response = self.client.delete( + f'/api/web/establishments/slug/{self.establishment.slug}/favorites/', + format='json') + self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) diff --git a/apps/establishment/urls/common.py b/apps/establishment/urls/common.py index bd53c7eb..99027d12 100644 --- a/apps/establishment/urls/common.py +++ b/apps/establishment/urls/common.py @@ -8,13 +8,13 @@ app_name = 'establishment' urlpatterns = [ path('', views.EstablishmentListView.as_view(), name='list'), path('tags/', views.EstablishmentTagListView.as_view(), name='tags'), - path('/', views.EstablishmentRetrieveView.as_view(), name='detail'), - path('/similar/', views.EstablishmentSimilarListView.as_view(), name='similar'), - path('/comments/', views.EstablishmentCommentListView.as_view(), name='list-comments'), - path('/comments/create/', views.EstablishmentCommentCreateView.as_view(), + path('slug//', views.EstablishmentRetrieveView.as_view(), name='detail'), + path('slug//similar/', views.EstablishmentSimilarListView.as_view(), name='similar'), + path('slug//comments/', views.EstablishmentCommentListView.as_view(), name='list-comments'), + path('slug//comments/create/', views.EstablishmentCommentCreateView.as_view(), name='create-comment'), - path('/comments//', views.EstablishmentCommentRUDView.as_view(), + path('slug//comments//', views.EstablishmentCommentRUDView.as_view(), name='rud-comment'), - path('/favorites/', views.EstablishmentFavoritesCreateDestroyView.as_view(), + path('slug//favorites/', views.EstablishmentFavoritesCreateDestroyView.as_view(), name='add-to-favorites') ]