mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-09 03:04:54 -04:00
feat: Shopping List Item Pagination Route (#2145)
* added pagination route for list items * pytest
This commit is contained in:
parent
c6d53fe8b1
commit
35124ea875
@ -12,6 +12,7 @@ from mealie.schema.group.group_shopping_list import (
|
|||||||
ShoppingListCreate,
|
ShoppingListCreate,
|
||||||
ShoppingListItemCreate,
|
ShoppingListItemCreate,
|
||||||
ShoppingListItemOut,
|
ShoppingListItemOut,
|
||||||
|
ShoppingListItemPagination,
|
||||||
ShoppingListItemsCollectionOut,
|
ShoppingListItemsCollectionOut,
|
||||||
ShoppingListItemUpdate,
|
ShoppingListItemUpdate,
|
||||||
ShoppingListItemUpdateBulk,
|
ShoppingListItemUpdateBulk,
|
||||||
@ -101,6 +102,12 @@ class ShoppingListItemController(BaseCrudController):
|
|||||||
self.logger,
|
self.logger,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@item_router.get("", response_model=ShoppingListItemPagination)
|
||||||
|
def get_all(self, q: PaginationQuery = Depends()):
|
||||||
|
response = self.repo.page_all(pagination=q, override=ShoppingListItemOut)
|
||||||
|
response.set_pagination_guides(router.url_path_for("get_all"), q.dict())
|
||||||
|
return response
|
||||||
|
|
||||||
@item_router.post("/create-bulk", response_model=ShoppingListItemsCollectionOut, status_code=201)
|
@item_router.post("/create-bulk", response_model=ShoppingListItemsCollectionOut, status_code=201)
|
||||||
def create_many(self, data: list[ShoppingListItemCreate]):
|
def create_many(self, data: list[ShoppingListItemCreate]):
|
||||||
items = self.service.bulk_create_items(data)
|
items = self.service.bulk_create_items(data)
|
||||||
|
@ -177,6 +177,10 @@ class ShoppingListItemsCollectionOut(MealieModel):
|
|||||||
deleted_items: list[ShoppingListItemOut] = []
|
deleted_items: list[ShoppingListItemOut] = []
|
||||||
|
|
||||||
|
|
||||||
|
class ShoppingListItemPagination(PaginationBase):
|
||||||
|
items: list[ShoppingListItemOut]
|
||||||
|
|
||||||
|
|
||||||
class ShoppingListCreate(MealieModel):
|
class ShoppingListCreate(MealieModel):
|
||||||
name: str | None = None
|
name: str | None = None
|
||||||
extras: dict | None = {}
|
extras: dict | None = {}
|
||||||
|
@ -101,6 +101,17 @@ def test_shopping_list_items_get_one(
|
|||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
|
def test_shopping_list_items_get_all(
|
||||||
|
api_client: TestClient,
|
||||||
|
unique_user: TestUser,
|
||||||
|
list_with_items: ShoppingListOut,
|
||||||
|
) -> None:
|
||||||
|
params = {"page": 1, "perPage": -1, "queryFilter": f"shopping_list_id={list_with_items.id}"}
|
||||||
|
response = api_client.get(api_routes.groups_shopping_items, params=params, headers=unique_user.token)
|
||||||
|
pagination_json = utils.assert_derserialize(response, 200)
|
||||||
|
assert len(pagination_json["items"]) == len(list_with_items.list_items)
|
||||||
|
|
||||||
|
|
||||||
def test_shopping_list_items_get_one_404(api_client: TestClient, unique_user: TestUser) -> None:
|
def test_shopping_list_items_get_one_404(api_client: TestClient, unique_user: TestUser) -> None:
|
||||||
response = api_client.get(api_routes.groups_shopping_items_item_id(uuid4()), headers=unique_user.token)
|
response = api_client.get(api_routes.groups_shopping_items_item_id(uuid4()), headers=unique_user.token)
|
||||||
assert response.status_code == 404
|
assert response.status_code == 404
|
||||||
|
Loading…
x
Reference in New Issue
Block a user