Add food api tests

This commit is contained in:
Michael Götz 2018-02-03 00:47:55 +01:00
parent 16dbf49d6e
commit 831991518f
7 changed files with 130 additions and 10 deletions

0
ofu_app/__init__.py Normal file
View File

View File

@ -1,6 +1,6 @@
from rest_framework import serializers
from apps.food.models import Menu, SingleFood, HappyHour, Allergene, UserFoodImage
from apps.food.models import Menu, SingleFood, HappyHour, Allergene, UserFoodImage, FoodImage
class UserFoodImageSerializer(serializers.HyperlinkedModelSerializer):
@ -9,6 +9,12 @@ class UserFoodImageSerializer(serializers.HyperlinkedModelSerializer):
fields = ('id', 'image_image', 'image_thumb')
class FoodImageSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = FoodImage
fields = ('id', 'image', 'thumb')
class AllergensSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Allergene
@ -17,7 +23,7 @@ class AllergensSerializer(serializers.HyperlinkedModelSerializer):
class SingleFoodSerializer(serializers.HyperlinkedModelSerializer):
allergens = AllergensSerializer(many=True, read_only=True)
image = UserFoodImageSerializer(many=True, read_only=True)
image = FoodImageSerializer(many=False, read_only=True)
class Meta:
model = SingleFood

View File

@ -19,15 +19,15 @@ from apps.food.models import Menu
urlpatterns = [
# API Version 1.1
url(r'^food/$', api_views.FoodViewSetV1_1.as_view({'get': 'list'})),
url(r'^food/$', api_views.FoodViewSetV1_1.as_view({'get': 'list'}), name='api-v1_1-food-all'),
url(r'^food/(?P<location>' + Menu.FEKI + '|' + Menu.MARKUSPLATZ + '|' + Menu.ERBA + '|' + Menu.AUSTRASSE + ')/$',
api_views.FoodViewSetV1_1.as_view({'get': 'list'})),
api_views.FoodViewSetV1_1.as_view({'get': 'list'}), name='api-v1_1-food-location'),
url(r'food/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$',
api_views.FoodViewSetV1_1.as_view({'get': 'list'})),
api_views.FoodViewSetV1_1.as_view({'get': 'list'}), name='api-v1_1-food-date'),
url(
r'food/(?P<location>' + Menu.FEKI + '|' + Menu.MARKUSPLATZ + '|' + Menu.ERBA + '|' + Menu.AUSTRASSE + ')/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$',
api_views.FoodViewSetV1_1.as_view({'get': 'list'})),
url(r'food/today/$', api_views.FoodViewSetV1_1.as_view({'get': 'list'})),
url(r'food/week/$', api_views.FoodViewSetV1_1.as_view({'get': 'list'})),
url(r'happy-hour', api_views.HappyHourViewSet.as_view({'get': 'list'})),
api_views.FoodViewSetV1_1.as_view({'get': 'list'}), name='api-v1_1-food-location-date'),
url(r'food/today/$', api_views.FoodViewSetV1_1.as_view({'get': 'list'}), name='api-v1_1-food-today'),
url(r'food/week/$', api_views.FoodViewSetV1_1.as_view({'get': 'list'}), name='api-v1_1-food-week'),
url(r'happy-hour', api_views.HappyHourViewSet.as_view({'get': 'list'}), name='api-v1_1-happy-hour-all'),
]

View File

View File

@ -0,0 +1,113 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.test import TestCase
from django.urls import reverse
from apps.food.models import SingleFood, Menu
from apps.food.api.serializers import MenuSerializer
from rest_framework import status
from rest_framework.test import APIRequestFactory
from datetime import datetime
# Create your tests here.
class SingleFood_Scope(TestCase):
def setUp(self):
self.singlefood_1 = SingleFood.objects.create(name="testfood1")
self.singlefood_2 = SingleFood.objects.create(name="testfood2")
self.singlefood_3 = SingleFood.objects.create(name="testfood3")
self.singlefood_4 = SingleFood.objects.create(name="testfood4")
self.singlefood_5 = SingleFood.objects.create(name="testfood5")
self.singlefood_6 = SingleFood.objects.create(name="testfood6")
self.menu_1 = Menu.objects.create(date='2017-01-15', location=Menu.ERBA)
self.menu_1.menu.add(self.singlefood_1)
self.menu_1.menu.add(self.singlefood_2)
self.menu_1.menu.add(self.singlefood_3)
self.menu_2 = Menu.objects.create(date='2017-01-10', location=Menu.FEKI)
self.menu_2.menu.add(self.singlefood_4)
self.menu_2.menu.add(self.singlefood_5)
self.menu_2.menu.add(self.singlefood_6)
def test_get_food_root(self):
"""
Right response on /food/api/v1.1/food
"""
menus = Menu.objects.all()
serializer = MenuSerializer(menus, many=True)
response = self.client.get(reverse('api-v1_1-food-all'))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data, serializer.data)
def test_get_food_date_param(self):
"""
Right response on /food/api/v1.1/food/2017/02/15/
"""
serializer = MenuSerializer(self.menu_2, many=False)
response_1 = self.client.get(reverse('api-v1_1-food-date', kwargs={'year': '2017', 'month': '01', 'day': '10'}))
self.assertEqual(response_1.status_code, 200)
self.assertEqual(response_1.data, [serializer.data])
serializer_2 = MenuSerializer(self.menu_1, many=False)
response_2 = self.client.get(reverse('api-v1_1-food-date', kwargs={'year': '2017', 'month': '01', 'day': '15'}))
self.assertEqual(response_2.status_code, 200)
self.assertEqual(response_2.data, [serializer_2.data])
def test_get_food_date_param_not_in_set(self):
"""
Right response on /food/api/v1.1/food/2017/02/15/
"""
response_1 = self.client.get(reverse('api-v1_1-food-date', kwargs={'year': '2017', 'month': '01', 'day': '11'}))
self.assertEqual(response_1.status_code, 200)
self.assertEqual(response_1.data, [])
def test_get_food_location_param(self):
"""
Right response on /food/api/v1.1/food/2017/02/15/
"""
serializer_1 = MenuSerializer(self.menu_1, many=False)
response_1 = self.client.get(reverse('api-v1_1-food-location', kwargs={'location': Menu.ERBA}))
self.assertEqual(response_1.status_code, 200)
self.assertEqual(response_1.data, [serializer_1.data])
serializer_2 = MenuSerializer(self.menu_2, many=False)
response_2 = self.client.get(reverse('api-v1_1-food-location', kwargs={'location': Menu.FEKI}))
self.assertEqual(response_2.status_code, 200)
self.assertEqual(response_2.data, [serializer_2.data])
def test_get_food_location_param_not_in_set(self):
"""
Right response on /food/api/v1.1/food/2017/02/15/
"""
response_1 = self.client.get(reverse('api-v1_1-food-location', kwargs={'location': Menu.AUSTRASSE}))
self.assertEqual(response_1.status_code, 200)
self.assertEqual(response_1.data, [])
def test_get_food_location_date_param(self):
"""
Right response on /food/api/v1.1/food/2017/02/15/
"""
serializer = MenuSerializer(self.menu_2, many=False)
response = self.client.get(reverse('api-v1_1-food-location-date',
kwargs={'year': '2017', 'month': '01', 'day': '10',
'location': Menu.FEKI}))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data, [serializer.data])
def test_get_food_location_date_param_not_in_set(self):
"""
Right response on /food/api/v1.1/food/2017/02/15/
"""
response_1 = self.client.get(reverse('api-v1_1-food-location-date',
kwargs={'year': '2017', 'month': '01', 'day': '11',
'location': Menu.FEKI}))
self.assertEqual(response_1.status_code, 200)
self.assertEqual(response_1.data, [])
response_1 = self.client.get(reverse('api-v1_1-food-location-date',
kwargs={'year': '2017', 'month': '01', 'day': '10',
'location': Menu.AUSTRASSE}))
self.assertEqual(response_1.status_code, 200)
self.assertEqual(response_1.data, [])

View File

@ -8,7 +8,7 @@ from apps.food.models import SingleFood
# Create your tests here.
class SingleFood_Created_Just_with_name(TestCase):
class SingleFood_Scope(TestCase):
def setUp(self):
SingleFood.objects.create(name="testfood")

View File

@ -6,4 +6,5 @@ requests==2.18.4
beautifulsoup4==4.6.0
#psycopg2==2.7.3.2
xmltodict==0.11.0
coverage==3.6