diff --git a/v1/recipe/tests/test_create_recipe.py b/v1/recipe/tests/test_create_recipe.py index ca4c833..27a36fe 100644 --- a/v1/recipe/tests/test_create_recipe.py +++ b/v1/recipe/tests/test_create_recipe.py @@ -1,35 +1,147 @@ #!/usr/bin/env python # encoding: utf-8 +import json from django.test import TestCase +from django.contrib.auth.models import User from rest_framework.test import APIRequestFactory from v1.recipe import views class RecipeSerializerTests(TestCase): + fixtures = [ + 'test/users.json', + 'course_data.json', + 'cuisine_data.json', + ] + def setUp(self): self.factory = APIRequestFactory() + self.staff = User.objects.create_user( + username='staff', email='staff@gmail.com', password='top_secret', is_superuser=True + ) def test_simple_create_recipe(self): """Test to make sure we have the right fields""" view = views.RecipeViewSet.as_view({'post': 'create'}) - request = self.factory.get('/api/v1/recipe/recipes/') - request.data = { - "id": 1, - "ingredients": [], + data = { + "ingredient_groups": [ + { + "id": 3, + "title": "", + "ingredients": [] + }, + { + "id": 4, + "title": "Veges", + "ingredients": [ + { + "id": 13, + "numerator": 1.0, + "denominator": 2.0, + "measurement": "dash", + "title": "black pepper" + }, + { + "id": 14, + "numerator": 4.0, + "denominator": 1.0, + "measurement": "tablespoons", + "title": "chili powder" + }, + { + "id": 15, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "tablespoon", + "title": "cumin" + }, + { + "id": 16, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "can", + "title": "dark kidney beans" + }, + { + "id": 17, + "numerator": 2.0, + "denominator": 1.0, + "measurement": "cans", + "title": "diced tomatos" + }, + { + "id": 18, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "green bell pepper" + }, + { + "id": 19, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "can", + "title": "light kidney beans" + }, + { + "id": 20, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "serrano pepper" + }, + { + "id": 21, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "white onion" + } + ] + }, + { + "id": 5, + "title": "Beef", + "ingredients": [ + { + "id": 22, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "pound", + "title": "ground pork" + }, + { + "id": 23, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "pound", + "title": "ground sirloin" + }, + { + "id": 24, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "dash", + "title": "kosher salt" + } + ] + } + ], "directions": '', - "tags": [], + "tags": ['hi', 'hello'], "title": "Recipe name", "info": "Recipe info", - "source": "", + "source": "google.com", "prep_time": 60, "cook_time": 60, "servings": 8, "rating": 0, - "author": 1, "cuisine": 1, "course": 2 } + request = self.factory.post('/api/v1/recipe/recipes/', data=data) + request.user = self.staff response = view(request) self.assertTrue(response.data.get('id', True)) diff --git a/v1/recipe/tests/test_update_recipe.py b/v1/recipe/tests/test_update_recipe.py index 20c7804..c50c98f 100644 --- a/v1/recipe/tests/test_update_recipe.py +++ b/v1/recipe/tests/test_update_recipe.py @@ -2,33 +2,272 @@ # encoding: utf-8 from django.test import TestCase +from django.contrib.auth.models import User from rest_framework.test import APIRequestFactory from v1.recipe import views class RecipeSerializerTests(TestCase): + fixtures = [ + 'test/users.json', + 'course_data.json', + 'cuisine_data.json', + 'ing_data.json', + 'recipe_data.json' + ] + def setUp(self): self.factory = APIRequestFactory() + self.staff = User.objects.create_user( + username='staff', email='staff@gmail.com', password='top_secret', is_superuser=True + ) def test_simple_patch_recipe(self): """Test to make sure we have the right fields""" - view = views.RecipeViewSet.as_view({'patch': 'create'}) - request = self.factory.get('/api/v1/recipe/recipes/1') - request.data = { - "ingredients": [], + view = views.RecipeViewSet.as_view({'patch': 'update'}) + data = { + "ingredient_groups": [ + { + "id": 3, + "title": "", + "ingredients": [] + }, + { + "id": 4, + "title": "Veges", + "ingredients": [ + { + "id": 13, + "numerator": 1.0, + "denominator": 2.0, + "measurement": "dash", + "title": "black pepper" + }, + { + "id": 14, + "numerator": 4.0, + "denominator": 1.0, + "measurement": "tablespoons", + "title": "chili powder" + }, + { + "id": 15, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "tablespoon", + "title": "cumin" + }, + { + "id": 16, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "can", + "title": "dark kidney beans" + }, + { + "id": 17, + "numerator": 2.0, + "denominator": 1.0, + "measurement": "cans", + "title": "diced tomatos" + }, + { + "id": 18, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "green bell pepper" + }, + { + "id": 19, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "can", + "title": "light kidney beans" + }, + { + "id": 20, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "serrano pepper" + }, + { + "id": 21, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "white onion" + } + ] + }, + { + "id": 5, + "title": "Beef", + "ingredients": [ + { + "id": 22, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "pound", + "title": "ground pork" + }, + { + "id": 23, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "pound", + "title": "ground sirloin" + }, + { + "id": 24, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "dash", + "title": "kosher salt" + } + ] + } + ], + "directions": '', + "tags": ['hi', 'hello'], + "title": "Recipe name", + "info": "Recipe info", + "source": "google.com", + "prep_time": 60, + "cook_time": 60, + "servings": 8, + "rating": 0, + "cuisine": 1, + "course": 2 + } + request = self.factory.patch('/api/v1/recipe/recipes/tasty-chili', data=data) + request.user = self.staff + response = view(request, slug='tasty-chili') + + self.assertTrue(response.data.get('id', True)) + + def test_put_recipe(self): + """Test to make sure we have the right fields""" + view = views.RecipeViewSet.as_view({'put': 'update'}) + data = { + "ingredient_groups": [ + { + "id": 3, + "title": "", + "ingredients": [] + }, + { + "id": 4, + "title": "Veges", + "ingredients": [ + { + "id": 13, + "numerator": 1.0, + "denominator": 2.0, + "measurement": "dash", + "title": "black pepper" + }, + { + "id": 14, + "numerator": 4.0, + "denominator": 1.0, + "measurement": "tablespoons", + "title": "chili powder" + }, + { + "id": 15, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "tablespoon", + "title": "cumin" + }, + { + "id": 16, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "can", + "title": "dark kidney beans" + }, + { + "id": 17, + "numerator": 2.0, + "denominator": 1.0, + "measurement": "cans", + "title": "diced tomatos" + }, + { + "id": 18, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "green bell pepper" + }, + { + "id": 19, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "can", + "title": "light kidney beans" + }, + { + "id": 20, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "serrano pepper" + }, + { + "id": 21, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "whole", + "title": "white onion" + } + ] + }, + { + "id": 5, + "title": "Beef", + "ingredients": [ + { + "id": 22, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "pound", + "title": "ground pork" + }, + { + "id": 23, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "pound", + "title": "ground sirloin" + }, + { + "id": 24, + "numerator": 1.0, + "denominator": 1.0, + "measurement": "dash", + "title": "kosher salt" + } + ] + } + ], "directions": '', - "tags": [], + "tags": ['hi', 'hello'], "title": "Recipe name", "info": "Recipe info", - "source": "", + "source": "google.com", "prep_time": 60, "cook_time": 60, "servings": 8, "rating": 0, - "author": 1, "cuisine": 1, "course": 2 } - response = view(request) + request = self.factory.put('/api/v1/recipe/recipes/tasty-chili', data=data) + request.user = self.staff + response = view(request, slug='tasty-chili') self.assertTrue(response.data.get('id', True))