diff --git a/mealie/services/scraper/cleaner.py b/mealie/services/scraper/cleaner.py index 0e1040742..88d635e1f 100644 --- a/mealie/services/scraper/cleaner.py +++ b/mealie/services/scraper/cleaner.py @@ -75,13 +75,17 @@ def clean(recipe_data: Recipe | dict, translator: Translator, url=None) -> Recip return Recipe(**recipe_data) -def clean_string(text: str | list | int) -> str: +def clean_string(text: str | list | int | float) -> str: """Cleans a string of HTML tags and extra white space""" if not isinstance(text, str): if isinstance(text, list): - text = text[0] - - if isinstance(text, int): + if text: + return clean_string(text[0]) + else: + text = "" + elif text is None: + text = "" + else: text = str(text) if not text: diff --git a/tests/unit_tests/services_tests/scraper_tests/test_cleaner_parts.py b/tests/unit_tests/services_tests/scraper_tests/test_cleaner_parts.py index 61e2e86b8..e3039569a 100644 --- a/tests/unit_tests/services_tests/scraper_tests/test_cleaner_parts.py +++ b/tests/unit_tests/services_tests/scraper_tests/test_cleaner_parts.py @@ -62,6 +62,36 @@ clean_string_test_cases = ( input=1, expected="1", ), + CleanerCase( + test_id="float", + input=1.5, + expected="1.5", + ), + CleanerCase( + test_id="none", + input=None, + expected="", + ), + CleanerCase( + test_id="list empty", + input=[], + expected="", + ), + CleanerCase( + test_id="list none", + input=[None], + expected="", + ), + CleanerCase( + test_id="list multiple none", + input=[None, None], + expected="", + ), + CleanerCase( + test_id="unexpected type", + input={"key": "value"}, + expected="{'key': 'value'}", + ), )