class TestRecipeSerializer(APITestCase): fixtures = ['user_single.json', 'baked_chicken.json', 'baked_chicken_image.json'] def setUp(self): self.model = models.Recipe.objects.all()[0] self.serializer = RecipeSerializer(self.model) def test_get_image_url(self): url = self.serializer.get_image_url(self.model) self.assertEqual(url, "/media/download_1orK6GT.jpg") def test_get_user_name(self): name = self.serializer.get_user_name(self.model) self.assertEqual(name, 'ichiro1')
def post(self, request, format='json'): """Creates recipe, post api request""" try: recipe_data = self.parse_json(request) except ValueError as e: return Response(str(e), status.HTTP_400_BAD_REQUEST) # Check for duplicate if Recipe.objects.filter(Name=recipe_data['Name']).exists(): return Response('Duplicate recipe named ' + recipe_data['Name'], status=status.HTTP_409_CONFLICT) recipe_serializer = RecipeSerializer(data=recipe_data) if recipe_serializer.is_valid(): recipe_serializer.save() return Response('Added Successfully!', status=status.HTTP_201_CREATED) return Response(recipe_serializer.data, status=status.HTTP_400_BAD_REQUEST)
def put(self, request): """Updates a recipe, put request""" try: recipe_data = self.parse_json(request) except ValueError as e: return Response(str(e), status.HTTP_400_BAD_REQUEST) try: recipe = Recipe.objects.get(Name=recipe_data.get('Name')) except Recipe.DoesNotExist: return Response(recipe_data, status=status.HTTP_404_NOT_FOUND) # only let them modify it if they created it! if recipe.Creator_id != recipe_data['Creator']: return Response(status=status.HTTP_403_FORBIDDEN) recipe_serializer = RecipeSerializer(recipe, data=recipe_data) if recipe_serializer.is_valid(): recipe_serializer.save() return Response('Successfully updated!', status=status.HTTP_200_OK) return Response(recipe_data, status=status.HTTP_400_BAD_REQUEST)
def get(self, request, *args, **kwargs): """ Recipe API for getting the backend recipes :param **kwargs can have a name parameter to specify a recipe to get """ name = self.kwargs.get('name') if name is None: recipes = Recipe.objects.all() recipe_serializer = RecipeSerializer(recipes, many=True) return JsonResponse(recipe_serializer.data, safe=False) else: try: recipe = Recipe.objects.get(Name=name) recipe_serializer = RecipeSerializer(recipe) return JsonResponse(recipe_serializer.data) except Recipe.DoesNotExist: return Response('Recipe not found', status=status.HTTP_404_NOT_FOUND)
def setUp(self): self.model = models.Recipe.objects.all()[0] self.serializer = RecipeSerializer(self.model)