From 9b9fbd5cabe94bdadeb65c93238b37509bb5ce47 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Thu, 9 Jul 2020 22:19:24 +0200 Subject: [PATCH] added food api view tests --- cookbook/tests/api/test_api_food.py | 53 +++++++++++++++++++++++++++++ cookbook/tests/api/test_api_unit.py | 8 ++--- cookbook/urls.py | 3 +- cookbook/views/api.py | 12 +++---- 4 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 cookbook/tests/api/test_api_food.py diff --git a/cookbook/tests/api/test_api_food.py b/cookbook/tests/api/test_api_food.py new file mode 100644 index 000000000..87e3317c0 --- /dev/null +++ b/cookbook/tests/api/test_api_food.py @@ -0,0 +1,53 @@ +import json + +from django.urls import reverse + +from cookbook.models import Food +from cookbook.tests.views.test_views import TestViews + + +class TestApiUnit(TestViews): + + def setUp(self): + super(TestApiUnit, self).setUp() + self.food_1 = Food.objects.create( + name='Beef' + ) + self.food_2 = Food.objects.create( + name='Chicken' + ) + + def test_keyword_list(self): + # verify view permissions are applied accordingly + self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 200), (self.admin_client_1, 200), (self.superuser_client, 200)], + reverse('api:food-list')) + + # verify storage is returned + r = self.user_client_1.get(reverse('api:food-list')) + self.assertEqual(r.status_code, 200) + response = json.loads(r.content) + self.assertEqual(len(response), 2) + self.assertEqual(response[0]['name'], self.food_1.name) + + r = self.user_client_1.get(f'{reverse("api:food-list")}?limit=1') + response = json.loads(r.content) + self.assertEqual(len(response), 1) + + r = self.user_client_1.get(f'{reverse("api:food-list")}?query=Pork') + response = json.loads(r.content) + self.assertEqual(len(response), 0) + + r = self.user_client_1.get(f'{reverse("api:food-list")}?query=Beef') + response = json.loads(r.content) + self.assertEqual(len(response), 1) + + def test_keyword_update(self): + r = self.user_client_1.patch(reverse('api:food-detail', args={self.food_1.id}), {'name': 'new'}, content_type='application/json') + response = json.loads(r.content) + self.assertEqual(r.status_code, 200) + self.assertEqual(response['name'], 'new') + + def test_keyword_delete(self): + r = self.user_client_1.delete(reverse('api:food-detail', args={self.food_1.id})) + self.assertEqual(r.status_code, 204) + self.assertEqual(Food.objects.count(), 1) diff --git a/cookbook/tests/api/test_api_unit.py b/cookbook/tests/api/test_api_unit.py index 0eec36c93..3d849166b 100644 --- a/cookbook/tests/api/test_api_unit.py +++ b/cookbook/tests/api/test_api_unit.py @@ -11,10 +11,10 @@ class TestApiUnit(TestViews): def setUp(self): super(TestApiUnit, self).setUp() self.unit_1 = Unit.objects.create( - name='Beef' + name='kg' ) self.unit_2 = Unit.objects.create( - name='Chicken' + name='g' ) def test_keyword_list(self): @@ -33,11 +33,11 @@ class TestApiUnit(TestViews): response = json.loads(r.content) self.assertEqual(len(response), 1) - r = self.user_client_1.get(f'{reverse("api:unit-list")}?query=Pork') + r = self.user_client_1.get(f'{reverse("api:unit-list")}?query=m') response = json.loads(r.content) self.assertEqual(len(response), 0) - r = self.user_client_1.get(f'{reverse("api:unit-list")}?query=Beef') + r = self.user_client_1.get(f'{reverse("api:unit-list")}?query=kg') response = json.loads(r.content) self.assertEqual(len(response), 1) diff --git a/cookbook/urls.py b/cookbook/urls.py index 687b35961..1edfb110d 100644 --- a/cookbook/urls.py +++ b/cookbook/urls.py @@ -16,8 +16,9 @@ router.register(r'sync', api.SyncViewSet) router.register(r'sync-log', api.SyncLogViewSet) router.register(r'keyword', api.KeywordViewSet) router.register(r'unit', api.UnitViewSet) - router.register(r'food', api.FoodViewSet) + + router.register(r'step', api.StepViewSet) router.register(r'recipe', api.RecipeViewSet) router.register(r'ingredient', api.IngredientViewSet) diff --git a/cookbook/views/api.py b/cookbook/views/api.py index 0c26836e1..1ca5305c2 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -124,6 +124,12 @@ class UnitViewSet(viewsets.ModelViewSet, StandardFilterMixin): permission_classes = [CustomIsUser] +class FoodViewSet(viewsets.ModelViewSet, StandardFilterMixin): + queryset = Food.objects.all() + serializer_class = FoodSerializer + permission_classes = [CustomIsUser] + + class RecipeBookViewSet(RetrieveModelMixin, UpdateModelMixin, ListModelMixin, viewsets.GenericViewSet): queryset = RecipeBook.objects.all() serializer_class = RecipeBookSerializer @@ -170,12 +176,6 @@ class MealTypeViewSet(viewsets.ModelViewSet): return queryset -class FoodViewSet(viewsets.ModelViewSet, StandardFilterMixin): - queryset = Food.objects.all() - serializer_class = FoodSerializer - permission_classes = [CustomIsUser] - - class IngredientViewSet(viewsets.ModelViewSet): queryset = Ingredient.objects.all() serializer_class = IngredientSerializer