Initial commit: What To Cook (WTC) v4.4 - Digitales Kochbuch, Wochenmenueplan & Buchdruck
This commit is contained in:
Executable
+85
@@ -0,0 +1,85 @@
|
||||
"""
|
||||
Automated Integration Tests for WTC Kochbuch & Recipes
|
||||
"""
|
||||
import unittest
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from app.main import app
|
||||
from app.database import (
|
||||
init_db,
|
||||
add_recipe,
|
||||
get_all_recipes,
|
||||
get_recipe,
|
||||
update_recipe,
|
||||
delete_recipe,
|
||||
CHAPTERS
|
||||
)
|
||||
|
||||
class TestCookbookApp(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
init_db()
|
||||
cls.client = TestClient(app)
|
||||
|
||||
def test_01_cookbook_pages(self):
|
||||
# 1. Main cookbook view
|
||||
res = self.client.get("/cookbook")
|
||||
self.assertEqual(res.status_code, 200)
|
||||
self.assertIn("Mein Kochbuch", res.text)
|
||||
self.assertIn("Meine", res.text)
|
||||
|
||||
# 2. Recipe new view
|
||||
res2 = self.client.get("/cookbook/new")
|
||||
self.assertEqual(res2.status_code, 200)
|
||||
self.assertIn("Neues Rezept eintragen", res2.text)
|
||||
|
||||
def test_02_create_recipe_and_view(self):
|
||||
# Create recipe via API with source and checkbox 'on'
|
||||
data = {
|
||||
"title": "Klassische Tiramisu",
|
||||
"chapter_number": 9,
|
||||
"effort": "mittel",
|
||||
"prep_time": "25 Min",
|
||||
"cook_time": "0 Min",
|
||||
"portions": 6,
|
||||
"ingredients": "500g Mascarpone\n4 frische Eier\n100g Zucker\n200g Löffelbiskuits\nKalter Espresso\nKakaopulver zum Bestäuben",
|
||||
"instructions": "Eigelb mit Zucker schaumig schlagen.\nMascarpone unterrühren.\nLöffelbiskuits in Espresso tränken und schichten.\nMit Kakaopulver bestäuben und kühlen.",
|
||||
"notes": "Mindestens 4 Stunden im Kühlschrank durchziehen lassen!",
|
||||
"source": "Oma Marias italienisches Originalrezept",
|
||||
"add_to_dishes": "on"
|
||||
}
|
||||
res = self.client.post("/api/recipes", data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
recipe = res.json()["recipe"]
|
||||
recipe_id = recipe["id"]
|
||||
self.assertEqual(recipe["title"], "Klassische Tiramisu")
|
||||
self.assertEqual(recipe["chapter_number"], 9)
|
||||
self.assertEqual(recipe.get("source"), "Oma Marias italienisches Originalrezept")
|
||||
|
||||
# View recipe detail page
|
||||
detail_res = self.client.get(f"/cookbook/recipe/{recipe_id}")
|
||||
self.assertEqual(detail_res.status_code, 200)
|
||||
self.assertIn("Klassische Tiramisu", detail_res.text)
|
||||
self.assertIn("500g Mascarpone", detail_res.text)
|
||||
self.assertIn("Oma Marias italienisches Originalrezept", detail_res.text)
|
||||
|
||||
# Edit recipe view
|
||||
edit_res = self.client.get(f"/cookbook/edit/{recipe_id}")
|
||||
self.assertEqual(edit_res.status_code, 200)
|
||||
self.assertIn("Rezept bearbeiten", edit_res.text)
|
||||
self.assertIn("Oma Marias italienisches Originalrezept", edit_res.text)
|
||||
|
||||
# Update recipe with modified source
|
||||
data["source"] = "Familienkochbuch Seite 42"
|
||||
del data["add_to_dishes"]
|
||||
put_res = self.client.put(f"/api/recipes/{recipe_id}", data=data)
|
||||
self.assertEqual(put_res.status_code, 200)
|
||||
updated_recipe = put_res.json()["recipe"]
|
||||
self.assertEqual(updated_recipe.get("source"), "Familienkochbuch Seite 42")
|
||||
|
||||
# Clean up
|
||||
del_res = self.client.delete(f"/api/recipes/{recipe_id}")
|
||||
self.assertEqual(del_res.status_code, 200)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user