diff --git a/mealie/services/parser_services/_base.py b/mealie/services/parser_services/_base.py index e8cae6bde..e7aee5b7d 100644 --- a/mealie/services/parser_services/_base.py +++ b/mealie/services/parser_services/_base.py @@ -173,4 +173,10 @@ class ABCIngredientParser(ABC): ingredient.ingredient.food = food_match ingredient.ingredient.unit = None + # Make sure empty foods/units are set to None + if ingredient.ingredient.food and not ingredient.ingredient.food.name: + ingredient.ingredient.food = None + if ingredient.ingredient.unit and not ingredient.ingredient.unit.name: + ingredient.ingredient.unit = None + return ingredient diff --git a/tests/unit_tests/test_ingredient_parser.py b/tests/unit_tests/test_ingredient_parser.py index ab3e48411..e3458480b 100644 --- a/tests/unit_tests/test_ingredient_parser.py +++ b/tests/unit_tests/test_ingredient_parser.py @@ -434,10 +434,10 @@ def test_parser_ingredient_match( if expect_food_match: assert isinstance(parsed_ingredient.ingredient.food, IngredientFood) + elif parsed_ingredient.ingredient.food and parsed_ingredient.ingredient.food.name: + assert isinstance(parsed_ingredient.ingredient.food, CreateIngredientFood) else: - assert parsed_ingredient.ingredient.food is None or isinstance( - parsed_ingredient.ingredient.food, CreateIngredientFood - ) + assert parsed_ingredient.ingredient.food is None if expected_unit_name: assert parsed_ingredient.ingredient.unit and parsed_ingredient.ingredient.unit.name == expected_unit_name @@ -446,10 +446,10 @@ def test_parser_ingredient_match( if expect_unit_match: assert isinstance(parsed_ingredient.ingredient.unit, IngredientUnit) + elif parsed_ingredient.ingredient.unit and parsed_ingredient.ingredient.unit.name: + assert isinstance(parsed_ingredient.ingredient.unit, CreateIngredientUnit) else: - assert parsed_ingredient.ingredient.unit is None or isinstance( - parsed_ingredient.ingredient.unit, CreateIngredientUnit - ) + assert parsed_ingredient.ingredient.unit is None def test_openai_parser(