Fix/issue#2003 - Unable to remove all instructions/ingredients from a recipe (#2008)

* Fix issue where recipes could not have all their ingredients/instructions removed

* Add test for removing all instructions and ingredients from a recipe
This commit is contained in:
Sören 2023-01-08 20:46:51 +01:00 committed by GitHub
parent a72f038247
commit 0cd892059b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 2 deletions

View file

@ -146,10 +146,10 @@ class RecipeModel(SqlAlchemyBase, BaseMixins):
) -> None:
self.nutrition = Nutrition(**nutrition) if nutrition else Nutrition()
if recipe_instructions:
if recipe_instructions is not None:
self.recipe_instructions = [RecipeInstruction(**step, session=session) for step in recipe_instructions]
if recipe_ingredient:
if recipe_ingredient is not None:
self.recipe_ingredient = [RecipeIngredient(**ingr, session=session) for ingr in recipe_ingredient]
if assets:

View file

@ -273,6 +273,36 @@ def test_duplicate(api_client: TestClient, recipe_data: RecipeSiteTestCase, uniq
assert copy_info(original_ingredients[i]) == copy_info(edited_ingredients[i])
# This needs to happen after test_duplicate,
# otherwise that one will run into problems with comparing the instruction/ingredient lists
@pytest.mark.parametrize("recipe_data", recipe_test_data)
def test_update_with_empty_relationship(
api_client: TestClient,
recipe_data: RecipeSiteTestCase,
unique_user: TestUser,
):
recipe_url = api_routes.recipes_slug(recipe_data.expected_slug)
response = api_client.get(recipe_url, headers=unique_user.token)
assert response.status_code == 200
recipe = json.loads(response.text)
recipe["recipeInstructions"] = []
recipe["recipeIngredient"] = []
response = api_client.put(recipe_url, json=utils.jsonify(recipe), headers=unique_user.token)
assert response.status_code == 200
assert json.loads(response.text).get("slug") == recipe_data.expected_slug
response = api_client.get(recipe_url, headers=unique_user.token)
assert response.status_code == 200
recipe = json.loads(response.text)
assert recipe["recipeInstructions"] == []
assert recipe["recipeIngredient"] == []
@pytest.mark.parametrize("recipe_data", recipe_test_data)
def test_rename(api_client: TestClient, recipe_data: RecipeSiteTestCase, unique_user: TestUser):
recipe_url = api_routes.recipes_slug(recipe_data.expected_slug)