mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-08-05 05:25:26 +02:00
feat: Query Filter Builder for Cookbooks and Meal Plans (#4346)
This commit is contained in:
parent
2a9a6fa5e6
commit
b8e62ab8dd
47 changed files with 2043 additions and 440 deletions
|
@ -21,7 +21,7 @@ def get_page_data(group_id: UUID | str, household_id: UUID4 | str):
|
|||
"slug": name_and_slug,
|
||||
"description": "",
|
||||
"position": 0,
|
||||
"categories": [],
|
||||
"query_filter_string": "",
|
||||
"group_id": str(group_id),
|
||||
"household_id": str(household_id),
|
||||
}
|
||||
|
@ -143,3 +143,42 @@ def test_delete_cookbook(api_client: TestClient, unique_user: TestUser, cookbook
|
|||
|
||||
response = api_client.get(api_routes.households_cookbooks_item_id(sample.slug), headers=unique_user.token)
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"qf_string, expected_code",
|
||||
[
|
||||
('tags.name CONTAINS ALL ["tag1","tag2"]', 200),
|
||||
('badfield = "badvalue"', 422),
|
||||
('recipe_category.id IN ["1"]', 422),
|
||||
('created_at >= "not-a-date"', 422),
|
||||
],
|
||||
ids=[
|
||||
"valid qf",
|
||||
"invalid field",
|
||||
"invalid UUID",
|
||||
"invalid date",
|
||||
],
|
||||
)
|
||||
def test_cookbook_validate_query_filter_string(
|
||||
api_client: TestClient, unique_user: TestUser, qf_string: str, expected_code: int
|
||||
):
|
||||
# Create
|
||||
cb_data = {"name": random_string(10), "slug": random_string(10), "query_filter_string": qf_string}
|
||||
response = api_client.post(api_routes.households_cookbooks, json=cb_data, headers=unique_user.token)
|
||||
assert response.status_code == expected_code if expected_code != 200 else 201
|
||||
|
||||
# Update
|
||||
cb_data = {"name": random_string(10), "slug": random_string(10), "query_filter_string": ""}
|
||||
response = api_client.post(api_routes.households_cookbooks, json=cb_data, headers=unique_user.token)
|
||||
assert response.status_code == 201
|
||||
cb_data = response.json()
|
||||
|
||||
cb_data["queryFilterString"] = qf_string
|
||||
response = api_client.put(
|
||||
api_routes.households_cookbooks_item_id(cb_data["id"]), json=cb_data, headers=unique_user.token
|
||||
)
|
||||
assert response.status_code == expected_code if expected_code != 201 else 200
|
||||
|
||||
# Out; should skip validation, so this should never error out
|
||||
ReadCookBook(**cb_data)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue