mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-10-27 00:04:23 -04:00
fix: add confidence calculation for BruteForceParser (#5903)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
This commit is contained in:
@@ -226,6 +226,46 @@ def test_brute_parser(
|
||||
assert not comment
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"unit, food, expect_unit_match, expect_food_match, expected_avg",
|
||||
[
|
||||
pytest.param("Cups", "potatoes", True, True, 1.0, id="all matched"),
|
||||
pytest.param("Cups", "veryuniquefood", True, False, 0.75, id="unit matched only"),
|
||||
pytest.param("veryuniqueunit", "potatoes", False, True, 0.75, id="food matched only"),
|
||||
pytest.param("veryuniqueunit", "veryuniquefood", False, False, 0.5, id="neither matched"),
|
||||
],
|
||||
)
|
||||
def test_brute_parser_confidence(
|
||||
unit: str,
|
||||
food: str,
|
||||
expect_unit_match: bool,
|
||||
expect_food_match: bool,
|
||||
expected_avg: float,
|
||||
unique_local_group_id: UUID4,
|
||||
parsed_ingredient_data: tuple[list[IngredientFood], list[IngredientUnit]],
|
||||
):
|
||||
input_str = f"1 {unit} {food}"
|
||||
|
||||
with session_context() as session:
|
||||
original_loop = asyncio.get_event_loop()
|
||||
try:
|
||||
loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(loop)
|
||||
parser = get_parser(RegisteredParser.brute, unique_local_group_id, session)
|
||||
parsed = loop.run_until_complete(parser.parse_one(input_str))
|
||||
finally:
|
||||
loop.close()
|
||||
asyncio.set_event_loop(original_loop)
|
||||
|
||||
conf = parsed.confidence
|
||||
|
||||
assert conf.quantity == 1
|
||||
assert conf.comment == 1
|
||||
assert conf.unit == (1 if expect_unit_match or not unit else 0)
|
||||
assert conf.food == (1 if expect_food_match or not food else 0)
|
||||
assert conf.average == expected_avg
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"input, expected_unit_name, expected_food_name, expect_unit_match, expect_food_match",
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user