Read patched recipes by stable id
Co-authored-by: Bumble <bumble@agents.famfallman.com> Co-authored-by: fredamn76 <fredrik.fallman@gmail.com> Signed-off-by: fredamn76 <fredrik.fallman@gmail.com>
This commit is contained in:
@@ -329,10 +329,14 @@ def patch_recipe(slug_or_id: str, patch: dict[str, Any]) -> dict[str, Any]:
|
||||
"""Apply an explicit Mealie recipe patch, then read the recipe back.
|
||||
|
||||
Use this for tags and categories too — the bulk-action endpoints return 500 on
|
||||
this instance. Patch ``recipeCategory`` and ``tags`` directly.
|
||||
this instance. Patch ``recipeCategory`` and ``tags`` directly. The stable
|
||||
recipe id is captured before the PATCH because changing ``name`` also changes
|
||||
Mealie's slug, making the old slug invalid for read-back.
|
||||
"""
|
||||
before = get_recipe(slug_or_id)
|
||||
stable_id = before.get("id") or slug_or_id
|
||||
_request("PATCH", f"/api/recipes/{slug_or_id}", json=patch)
|
||||
return get_recipe(slug_or_id)
|
||||
return get_recipe(stable_id)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
|
||||
@@ -62,14 +62,24 @@ class TestUrlImportResponse:
|
||||
class TestPatchContract:
|
||||
def test_patch_recipe_reads_back_the_final_object(self, monkeypatch):
|
||||
seen = []
|
||||
updated = {"slug": "soppa", "name": "Soppa", "tags": [{"name": "📅 Vardag"}]}
|
||||
before = {"id": "stable-id", "slug": "soppa", "name": "Soppa"}
|
||||
updated = {
|
||||
"id": "stable-id",
|
||||
"slug": "ny-soppa",
|
||||
"name": "Ny soppa",
|
||||
"tags": [{"name": "📅 Vardag"}],
|
||||
}
|
||||
|
||||
def request(method, path, **kwargs):
|
||||
seen.append((method, path, kwargs))
|
||||
return None
|
||||
|
||||
monkeypatch.setattr(server, "_request", request)
|
||||
monkeypatch.setattr(server, "get_recipe", lambda slug: updated if slug == "soppa" else None)
|
||||
monkeypatch.setattr(
|
||||
server,
|
||||
"get_recipe",
|
||||
lambda key: before if key == "soppa" else updated if key == "stable-id" else None,
|
||||
)
|
||||
|
||||
assert server.patch_recipe("soppa", {"tags": updated["tags"]}) == updated
|
||||
assert seen == [("PATCH", "/api/recipes/soppa", {"json": {"tags": updated["tags"]}})]
|
||||
|
||||
Reference in New Issue
Block a user