コード例 #1
0
    def test_retrieve_recipe(self):
        sample_recipe(self.user)
        sample_recipe(self.user)
        recipes = Recipe.objects.order_by('-id')
        serializer = RecipeSerializer(recipes, many=True)
        resp = self.client.get(RECIPE_LIST_URL)

        self.assertEqual(resp.status_code, status.HTTP_200_OK)
        self.assertEqual(resp.data, serializer.data)
コード例 #2
0
    def test_filter_recipes_by_tags(self):
        """tag 가 있는 recipe 만 리턴되는지 테스트"""
        recipe1 = sample_recipe(user=self.user, title='Poo Phat Pong Curry')
        recipe2 = sample_recipe(user=self.user, title='Kimchi soup')
        tag1 = sample_tag(user=self.user, name='Yummy')
        tag2 = sample_tag(user=self.user, name='good place')
        recipe1.tags.add(tag1)
        recipe2.tags.add(tag2)
        recipe3 = sample_recipe(user=self.user, title='Fish and chips')

        res = self.client.get(RECIPES_URL, {'tags': f'{tag1.id}, {tag2.id}'})

        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)
        self.assertIn(serializer1.data, res.data)
        self.assertIn(serializer2.data, res.data)
        self.assertNotIn(serializer3.data, res.data)
コード例 #3
0
    def test_filter_recipes_by_tags(self):
        recipe1 = sample_recipe(user=self.user, title='Thai vegetable curry')
        recipe2 = sample_recipe(user=self.user, title='Aubergine with tahini')
        tag1 = sample_tag(user=self.user, name='Vegan')
        tag2 = sample_tag(user=self.user, name='Vegetarian')
        recipe1.tags.add(tag1)
        recipe2.tags.add(tag2)
        recipe3 = sample_recipe(user=self.user, title='Fish and chips')

        resp = self.client.get(RECIPE_LIST_URL,
                               {'tags': f'{tag1.id},{tag2.id}'})

        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)
        self.assertIn(serializer1.data, resp.data)
        self.assertIn(serializer2.data, resp.data)
        self.assertNotIn(serializer3.data, resp.data)
コード例 #4
0
    def test_filter_by_ingredients(self):
        recipe1 = sample_recipe(user=self.user, title='Thai vegetable curry')
        recipe2 = sample_recipe(user=self.user, title='Aubergine with tahini')
        recipe3 = sample_recipe(user=self.user, title='Spaghetti with meat')
        ingredient1 = Ingredient.objects.create(user=self.user, name='Tomato')
        ingredient2 = Ingredient.objects.create(user=self.user, name='Bean')
        recipe1.ingredients.add(ingredient1)
        recipe2.ingredients.add(ingredient2)

        resp = self.client.get(
            RECIPE_LIST_URL,
            {'ingredients': f'{ingredient1.id},{ingredient2.id}'})

        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)
        self.assertIn(serializer1.data, resp.data)
        self.assertIn(serializer2.data, resp.data)
        self.assertNotIn(serializer3.data, resp.data)
コード例 #5
0
    def test_retrieve_recipes(self):
        """test retrieving a list of recipes"""
        sample_recipe(user=self.user)
        sample_recipe(user=self.user)
        res = self.client.get(RECIPE_URL)

        recipes = Recipe.objects.all().order_by('-id')
        serializer = RecipeSerializer(recipes, many=True)
        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertEqual(res.data, serializer.data)
コード例 #6
0
    def test_filter_recipes_by_ingredients(self):
        """ingredients 가 있는 recipe 만 리턴되는지 테스트"""
        recipe1 = sample_recipe(user=self.user, title='Combination Pizza')
        recipe2 = sample_recipe(user=self.user, title='Tomato spaghetti')
        ingredient1 = sample_ingredient(user=self.user, name='milk')
        ingredient2 = sample_ingredient(user=self.user, name='tomato')
        recipe1.ingredients.add(ingredient1)
        recipe2.ingredients.add(ingredient2)
        recipe3 = sample_recipe(user=self.user, title='Cheese cake')

        res = self.client.get(
            RECIPES_URL,
            {'ingredients': {f'{ingredient1.id},{ingredient2.id}'}})

        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)
        self.assertIn(serializer1.data, res.data)
        self.assertIn(serializer2.data, res.data)
        self.assertNotIn(serializer3.data, res.data)
コード例 #7
0
    def test_retrieve_recipes_limited_to_user(self):
        user2 = get_user_model().objects.create_user('*****@*****.**',
                                                     'test123')
        sample_recipe(self.user)
        sample_recipe(user2)

        recipes = Recipe.objects.filter(user=self.user)
        serializer = RecipeSerializer(recipes, many=True)

        resp = self.client.get(RECIPE_LIST_URL)
        self.assertEqual(resp.status_code, status.HTTP_200_OK)
        self.assertEqual(resp.data, serializer.data)
コード例 #8
0
    def test_filter_recipes_by_tags(self):
        """Test returning recipes with specific tags"""
        recipe1 = sample_recipe(user=self.user, title='Tahi vegetable curry')
        recipe2 = sample_recipe(user=self.user, title='Twice-cooked pork')
        tag1 = sample_tag(user=self.user, name='Vegan')
        tag2 = sample_tag(user=self.user, name='Meat')
        recipe1.tags.add(tag1)
        recipe2.tags.add(tag2)
        recipe3 = sample_recipe(user=self.user, title='Fish and chips')

        res = self.client.get(
            RECIPES_URL,
            {'tags': f'{tag1.id},{tag2.id}'}
        )

        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)
        self.assertIn(serializer1.data, res.data)
        self.assertIn(serializer2.data, res.data)
        self.assertNotIn(serializer3.data, res.data)
コード例 #9
0
def test_filter_recipes_by_tags(self):
    """Test returning recipes with specific tags"""
    recipe1 = sample_recipe(user=self.user, title='Thai vegetable curry')
    recipe2 = sample_recipe(user=self.user, title='Aubergine with tahini')
    tag1 = sample_tag(user=self.user, name='Vegan')
    tag2 = sample_tag(user=self.user, name='Vegetarian')
    recipe1.tags.add(tag1)
    recipe2.tags.add(tag2)
    recipe3 = sample_recipe(user=self.user, title='Fish and chips')

    res = self.client.get(
        RECIPES_URL,
        {'tags': '{},{}'.format(tag1.id, tag2.id)}
    )

    serializer1 = RecipeSerializer(recipe1)
    serializer2 = RecipeSerializer(recipe2)
    serializer3 = RecipeSerializer(recipe3)
    self.assertIn(serializer1.data, res.data)
    self.assertIn(serializer2.data, res.data)
    self.assertNotIn(serializer3.data, res.data)
コード例 #10
0
    def test_filter_recipes_by_ingredients(self):
        """Test returning recipes with specific ingredients"""
        recipe1 = sample_recipe(user=self.user, title='Posh beans on toast')
        recipe2 = sample_recipe(user=self.user, title='Chicken cacciatore')
        ingredient1 = sample_ingredient(user=self.user, name='Feta cheese')
        ingredient2 = sample_ingredient(user=self.user, name='Chicken')
        recipe1.ingredients.add(ingredient1)
        recipe2.ingredients.add(ingredient2)
        recipe3 = sample_recipe(user=self.user, title='Steak and mushrooms')

        res = self.client.get(
            RECIPES_URL,
            {'ingredients': f'{ingredient1.id},{ingredient2.id}'}
        )

        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)
        self.assertIn(serializer1.data, res.data)
        self.assertIn(serializer2.data, res.data)
        self.assertNotIn(serializer3.data, res.data)
コード例 #11
0
    def test_filter_recipe_by_ingredient(self):
        """Test returning recipes with teh ingredients"""
        recipe1 = sample_recipe(user=self.user, title='Ugali')
        recipe2 = sample_recipe(user=self.user, title='Nyama boil')
        recipe3 = sample_recipe(user=self.user, title='managu stew')

        ingredient1 = sample_ingredient(user=self.user, name='unga wimbi')
        ingredient2 = sample_ingredient(user=self.user, name='nyama steak')

        recipe1.ingredients.add(ingredient1)
        recipe2.ingredients.add(ingredient2)

        res = self.client.get(
            RECIPE_URL, {'ingredients': f'{ingredient1.id}, {ingredient2.id}'})

        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)

        self.assertIn(serializer1.data, res.data)
        self.assertIn(serializer2.data, res.data)
        self.assertNotIn(serializer3.data, res.data)
コード例 #12
0
    def test_filter_recipe_by_ingredients(self):
        """Test returnng recipes with specific ingredients"""
        recipe1 = sample_recipe(user=self.user, title='Curry')
        recipe2 = sample_recipe(user=self.user, title='Rice')
        ingredient1 = sample_ingredient(self.user, name='Cheese')
        ingredient2 = sample_ingredient(self.user, name='Chicken')
        recipe1.ingredients.add(ingredient1)
        recipe2.ingredients.add(ingredient2)
        recipe3 = sample_recipe(self.user, title='Stake')

        res = self.client.get(
            RECIPES_URL,
            {'ingredients': f'{ingredient1.id},{ingredient2.id}'}
        )

        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)

        self.assertIn(serializer1.data, res.data)
        self.assertIn(serializer2.data, res.data)
        self.assertNotIn(serializer3.data, res.data)
コード例 #13
0
    def test_filter_recipe_by_tag(self):
        """test filter recipes per the api"""
        recipe1 = sample_recipe(user=self.user,
                                title='The green kachumbari recipe from kitui')
        recipe2 = sample_recipe(user=self.user,
                                title='The mashakura recipe from Thika')

        tag1 = sample_tag(user=self.user, name='mboga')
        tag2 = sample_tag(user=self.user, name='nyama')

        recipe1.tags.add(tag1)
        recipe2.tags.add(tag2)

        recipe3 = sample_recipe(user=self.user, title='Chapati madondo')

        res = self.client.get(RECIPE_URL, {'tags': f'{tag1.id},{tag2.id}'})
        serializer1 = RecipeSerializer(recipe1)
        serializer2 = RecipeSerializer(recipe2)
        serializer3 = RecipeSerializer(recipe3)

        self.assertIn(serializer1.data, res.data)
        self.assertIn(serializer2.data, res.data)
        self.assertNotIn(serializer3.data, res.data)
コード例 #14
0
    def test_recipe_limited_to_user(self):
        """Test retrieving recipe for user"""
        user2 = get_user_model().objects.create_user('*****@*****.**',
                                                     'password')
        sample_recipe(user=user2)
        sample_recipe(user=self.user)

        res = self.client.get(RECIPES_URL)

        recipe = Recipe.objects.filter(user=self.user)
        serializer = RecipeSerializer(recipe, many=True)
        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertEqual(len(res.data), 1)
        self.assertEqual(res.data, serializer.data)
コード例 #15
0
    def test_recipe_list_limited_to_user(self):
        """test only recipes belong to authenticated user"""

        user2 = get_user_model().objects.create_user('*****@*****.**',
                                                     'password34556')

        sample_recipe(user=user2)
        sample_recipe(user=self.user)
        res = self.client.get(RECIPE_URL)

        recipes = Recipe.objects.all().filter(user=self.user)
        serializer = RecipeSerializer(recipes, many=True)
        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertEqual(len(res.data), 1)
        self.assertEqual(res.data, serializer.data)
コード例 #16
0
  def test_recipe_limited_to_user(self):
    user2=get_user_model().objects.create_user(
      '*****@*****.**',
      '1234'
    )
    sample_recipe(user=user2)
    sample_recipe(user=self.user)

    res = self.client.get(RECIPE_URL)

    recipes = Recipe.objects.filter(user=self.user)
    serializer = RecipeSerializer(recipes, many=True)

    self.assertEqual(res.status_code, status.HTTP_200_OK)
    self.assertEqual(len(res.data), 1)
    self.assertEqual(res.data, serializer.data)
コード例 #17
0
    def test_recipes_limited_to_user(self):
        """인증 된 유저만 결과값을 반환하는지 테스트"""
        user2 = get_user_model().objects.create_user('*****@*****.**',
                                                     'pass4321')
        # user2 는 인증받지 못한 유저 객체
        sample_recipe(user=user2)
        # self.user 는 setUp 에서 force_authenticate 를 받았음
        sample_recipe(user=self.user)

        res = self.client.get(RECIPES_URL)

        # RecipeSerializer 와 비교하기 위해 쿼리셋을 반환하는 filter 를 사용
        recipes = Recipe.objects.filter(user=self.user)
        serializer = RecipeSerializer(recipes, many=True)

        self.assertEqual(res.status_code, status.HTTP_200_OK)
        self.assertEqual(len(res.data), 1)
        self.assertEqual(res.data, serializer.data)