From f4ad388e36c6326a51c6a754ee613611814e38e6 Mon Sep 17 00:00:00 2001 From: jableader Date: Sat, 1 Nov 2025 15:33:36 +1100 Subject: [PATCH] Tests and lint pass --- api/deps.py | 1 - api/recipes_v2.py | 2 +- api/shopping.py | 10 +++++++--- api/shopping_v2.py | 1 - households/models.py | 2 +- main.py | 2 +- tests/test_auth_and_households_v2.py | 3 +-- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/api/deps.py b/api/deps.py index 372dab7..83c55e5 100644 --- a/api/deps.py +++ b/api/deps.py @@ -12,7 +12,6 @@ from common import ProblemDetails from settings import settings from users.models import User from security import JwtConfig, verify_jwt -from settings import settings from typing import TypedDict diff --git a/api/recipes_v2.py b/api/recipes_v2.py index d0902b7..5ebe593 100644 --- a/api/recipes_v2.py +++ b/api/recipes_v2.py @@ -3,7 +3,7 @@ from __future__ import annotations from typing import List, Optional import aiosqlite -from fastapi import APIRouter, Depends, Query, Request, Response +from fastapi import APIRouter, Depends, Query, Response import ingredients as ingredients_mod import recipes diff --git a/api/shopping.py b/api/shopping.py index dc70018..d0a9ad7 100644 --- a/api/shopping.py +++ b/api/shopping.py @@ -2,7 +2,7 @@ from __future__ import annotations from datetime import datetime from enum import Enum -from typing import Dict, List, Literal +from typing import Dict, List, Literal, cast import aiosqlite from fastapi import APIRouter, Depends, Request, Response @@ -109,11 +109,15 @@ def _to_meal_item(item: shopping.ShoppingListItem) -> RequestedMealItem: def _to_shopping_list_out(sl: shopping.ShoppingList) -> ShoppingListOut: # Map internal enum value "" to outward-friendly "home" - outward_store = "home" if sl.store_name == StoreEnum.home else sl.store_name.value + if sl.store_name == StoreEnum.home: + outward_store: Literal["woolworths", "coles", "home"] = "home" + else: + # Remaining enum values are 'woolworths' or 'coles' + outward_store = cast(Literal["woolworths", "coles"], sl.store_name.value) return ShoppingListOut( id=sl.id, created_date=sl.created_date, - store_name=outward_store, + store_name=outward_store, purchased_by_id=sl.purchased_by_id, purchased_by=sl.purchased_by, items=[_to_ingredient_item(i) for i in sl.items], diff --git a/api/shopping_v2.py b/api/shopping_v2.py index 8b872a7..f532fc7 100644 --- a/api/shopping_v2.py +++ b/api/shopping_v2.py @@ -13,7 +13,6 @@ from api.shopping import ( _to_ingredient_item, _to_meal_item, _to_shopping_list_out, - IngredientPurchaseItemIn, PurchaseListIn, ) diff --git a/households/models.py b/households/models.py index e29d306..d8e8c1d 100644 --- a/households/models.py +++ b/households/models.py @@ -1,4 +1,4 @@ -from typing import ClassVar, Optional +from typing import ClassVar from common import ApiModel diff --git a/main.py b/main.py index cc13214..86bba6a 100644 --- a/main.py +++ b/main.py @@ -169,7 +169,7 @@ def create_app() -> FastAPI: app.include_router(households_router.router, prefix="/api/v1", tags=["v2"]) # new # Mount household-scoped endpoints try: - app.include_router(households_router.scoped, prefix="/api/v1", tags=["v2"]) # type: ignore[attr-defined] + app.include_router(households_router.scoped, prefix="/api/v1", tags=["v2"]) except Exception: pass app.include_router(recipes_v2_router.router, prefix="/api/v1", tags=["v2"]) # new diff --git a/tests/test_auth_and_households_v2.py b/tests/test_auth_and_households_v2.py index 467bb23..661850c 100644 --- a/tests/test_auth_and_households_v2.py +++ b/tests/test_auth_and_households_v2.py @@ -39,9 +39,8 @@ class TestAuthAndHouseholdsV2(unittest.IsolatedAsyncioTestCase): # List households (migration created default household 'default' and membership set to admin) r = self.client.get("/api/v1/users/me/households", headers=headers) assert r.status_code == 200, r.text - households = r.json() - # Create a new household + # Create a new household r = self.client.post("/api/v1/households", headers=headers, json={"name": "Family"}) assert r.status_code == 200, r.text created = r.json()