# Copyright (C) 2018-2025 by BDE ENS Paris-Saclay # SPDX-License-Identifier: GPL-3.0-or-later from api.tests import TestAPI from django.contrib.auth.models import User from django.test import TestCase from django.urls import reverse from django.utils import timezone from ..api.views import AllergenViewSet, BasicFoodViewSet, TransformedFoodViewSet, QRCodeViewSet from ..models import Allergen, BasicFood, TransformedFood, QRCode class TestFood(TestCase): """ Test food """ fixtures = ('initial',) def setUp(self): self.user = User.objects.create_superuser( username='admintoto', password='toto1234', email='toto@example.com' ) self.client.force_login(self.user) sess = self.client.session sess['permission_mask'] = 42 sess.save() self.allergen = Allergen.objects.create( name='allergen', ) self.basicfood = BasicFood.objects.create( name='basicfood', owner_id=1, expiry_date=timezone.now(), is_ready=False, date_type='DLC', ) self.transformedfood = TransformedFood.objects.create( name='transformedfood', owner_id=1, expiry_date=timezone.now(), is_ready=False, ) self.qrcode = QRCode.objects.create( qr_code_number=1, food_container=self.basicfood, ) def test_food_list(self): """ Display food list """ response = self.client.get(reverse('food:food_list')) self.assertEqual(response.status_code, 200) def test_qrcode_create(self): """ Display QRCode creation """ response = self.client.get(reverse('food:qrcode_create')) self.assertEqual(response.status_code, 200) def test_basicfood_create(self): """ Display BasicFood creation """ response = self.client.get(reverse('food:basicfood_create')) self.assertEqual(response.status_code, 200) def test_transformedfood_create(self): """ Display TransformedFood creation """ response = self.client.get(reverse('food:transformedfood_create')) self.assertEqual(response.status_code, 200) def test_food_create(self): """ Display Food update """ response = self.client.get(reverse('food:food_update')) self.assertEqual(response.status_code, 200) def test_food_view(self): """ Display Food detail """ response = self.client.get(reverse('food:food_view')) self.assertEqual(response.status_code, 302) def test_basicfood_view(self): """ Display BasicFood detail """ response = self.client.get(reverse('food:basicfood_view')) self.assertEqual(response.status_code, 200) def test_transformedfood_view(self): """ Display TransformedFood detail """ response = self.client.get(reverse('food:transformedfood_view')) self.assertEqual(response.status_code, 200) def test_add_ingredient(self): """ Display add ingredient view """ response = self.client.get(reverse('food:add_ingredient')) self.assertEqual(response.status_code, 200) class TestFoodAPI(TestAPI): def setUp(self) -> None: super().setUP() self.allergen = Allergen.objects.create( name='name', ) self.basicfood = BasicFood.objects.create( name='basicfood', owner_id=1, expiry_date=timezone.now(), is_ready=False, date_type='DLC', ) self.transformedfood = TransformedFood.objects.create( name='transformedfood', owner_id=1, expiry_date=timezone.now(), is_ready=False, ) self.qrcode = QRCode.objects.create( qr_code_number=1, food_container=self.basicfood, ) def test_allergen_api(self): """ Load Allergen API page and test all filters and permissions """ self.check_viewset(AllergenViewSet, '/api/food/allergen/') def test_basicfood_api(self): """ Load BasicFood API page and test all filters and permissions """ self.check_viewset(BasicFoodViewSet, '/api/food/basicfood/') def test_transformedfood_api(self): """ Load TransformedFood API page and test all filters and permissions """ self.check_viewset(TransformedFoodViewSet, '/api/food/transformedfood/') def test_qrcode_api(self): """ Load QRCode API page and test all filters and permissions """ self.check_viewset(QRCodeViewSet, '/api/food/qrcode/')