c696dee320
* feat: import original keywords as tags * remove cached env * Update frontend api types * fix: Issues with previous tag scraping implementation * Update category handling in backend * Update backend tests to include group_id * Correct type check * Update create-url interface * Improve tag cleaner list support * remove builtin name shadowing * update type annotations * test include tags scraper * implement scaper context for optional data * readd cache venv * use continue instead of break * remove test callback Co-authored-by: Miroito <alban.vachette@gmail.com>
124 lines
4.3 KiB
Python
124 lines
4.3 KiB
Python
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
|
|
from tests import data as test_data
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class RecipeSiteTestCase:
|
|
url: str
|
|
html: str
|
|
expected_slug: str
|
|
num_ingredients: int
|
|
num_steps: int
|
|
html_file: Path
|
|
|
|
|
|
def get_recipe_test_cases():
|
|
return [
|
|
RecipeSiteTestCase(
|
|
url="https://www.seriouseats.com/taiwanese-three-cup-chicken-san-bei-gi-recipe",
|
|
html="taiwanese-three-cup-chicken-san-bei-gi-recipe.html",
|
|
html_file=test_data.html_taiwanese_three_cup_chicken_san_bei_gi_recipe,
|
|
expected_slug="taiwanese-three-cup-chicken-san-bei-ji-recipe",
|
|
num_ingredients=10,
|
|
num_steps=3,
|
|
),
|
|
RecipeSiteTestCase(
|
|
url="https://www.rezeptwelt.de/backen-herzhaft-rezepte/schinken-kaese-waffeln-ohne-viel-schnickschnack/4j0bkiig-94d4d-106529-cfcd2-is97x2ml",
|
|
html="schinken-kase-waffeln-ohne-viel-schnickschnack.html",
|
|
html_file=test_data.html_schinken_kase_waffeln_ohne_viel_schnickschnack,
|
|
expected_slug="schinken-kase-waffeln-ohne-viel-schnickschnack",
|
|
num_ingredients=7,
|
|
num_steps=1, # Malformed JSON Data, can't parse steps just get one string
|
|
),
|
|
RecipeSiteTestCase(
|
|
url="https://cookpad.com/us/recipes/5544853-sous-vide-smoked-beef-ribs",
|
|
html="sous-vide-smoked-beef-ribs.html",
|
|
html_file=test_data.html_sous_vide_smoked_beef_ribs,
|
|
expected_slug="sous-vide-smoked-beef-ribs",
|
|
num_ingredients=7,
|
|
num_steps=12,
|
|
),
|
|
RecipeSiteTestCase(
|
|
url="https://www.greatbritishchefs.com/recipes/jam-roly-poly-recipe",
|
|
html="jam-roly-poly-with-custard.html",
|
|
html_file=test_data.html_jam_roly_poly_with_custard,
|
|
expected_slug="jam-roly-poly-with-custard",
|
|
num_ingredients=13,
|
|
num_steps=9,
|
|
),
|
|
RecipeSiteTestCase(
|
|
url="https://recipes.anovaculinary.com/recipe/sous-vide-shrimp",
|
|
html="sous-vide-shrimp.html",
|
|
html_file=test_data.html_sous_vide_shrimp,
|
|
expected_slug="sous-vide-shrimp",
|
|
num_ingredients=5,
|
|
num_steps=0,
|
|
),
|
|
RecipeSiteTestCase(
|
|
url="https://www.bonappetit.com/recipe/detroit-style-pepperoni-pizza",
|
|
html="detroit-style-pepperoni-pizza.html",
|
|
html_file=test_data.html_detroit_style_pepperoni_pizza,
|
|
expected_slug="detroit-style-pepperoni-pizza",
|
|
num_ingredients=8,
|
|
num_steps=5,
|
|
),
|
|
]
|
|
|
|
|
|
def get_raw_recipe():
|
|
return {
|
|
"name": "Banana Bread",
|
|
"description": "From Angie's mom",
|
|
"image": "banana-bread.jpg",
|
|
"recipeYield": "",
|
|
"recipeIngredient": [
|
|
"4 bananas",
|
|
"1/2 cup butter",
|
|
"1/2 cup sugar",
|
|
"2 eggs",
|
|
"2 cups flour",
|
|
"1/2 tsp baking soda",
|
|
"1 tsp baking powder",
|
|
"pinch salt",
|
|
"1/4 cup nuts (we like pecans)",
|
|
],
|
|
"recipeInstructions": [
|
|
{
|
|
"@type": "Beat the eggs, then cream with the butter and sugar",
|
|
"text": "Beat the eggs, then cream with the butter and sugar",
|
|
},
|
|
{
|
|
"@type": "Mix in bananas, then flour, baking soda/powder, salt, and nuts",
|
|
"text": "Mix in bananas, then flour, baking soda/powder, salt, and nuts",
|
|
},
|
|
{
|
|
"@type": "Add to greased and floured pan",
|
|
"text": "Add to greased and floured pan",
|
|
},
|
|
{
|
|
"@type": "Bake until brown/cracked, toothpick comes out clean",
|
|
"text": "Bake until brown/cracked, toothpick comes out clean",
|
|
},
|
|
],
|
|
"totalTime": "None",
|
|
"prepTime": None,
|
|
"tools": ["test_tool"],
|
|
"performTime": None,
|
|
"slug": "",
|
|
"categories": [],
|
|
"tags": ["breakfast", " baking"],
|
|
"dateAdded": "2021-01-12",
|
|
"notes": [],
|
|
"rating": 0,
|
|
"orgURL": None,
|
|
"extras": {},
|
|
}
|
|
|
|
|
|
def get_raw_no_image():
|
|
raw = get_raw_recipe()
|
|
raw["name"] = "Banana Bread No Image"
|
|
raw["image"] = ""
|
|
return raw
|