More fixes to make the tests work for the backend once more.

Signed-off-by: Cliff Hill <xlorep@darkhelm.org>
This commit is contained in:
2025-09-03 19:06:59 -04:00
parent 08b646c1d1
commit 32b89ba2fb
4 changed files with 23 additions and 24 deletions

View File

@@ -22,7 +22,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
# Ensure .env is loaded from base or parent directory before any project
# imports
def _load_env_from_base_or_parent():
def _load_env_from_base_or_parent() -> None:
base = Path(__file__).parent.parent # project root
env_path = base / ".env"
if env_path.exists():

View File

@@ -28,6 +28,12 @@ from backend.services.bookings import new_booking
from backend.services.bookings import update_booking
def _config_side_effect(key: str, *args: Any, **kwargs: Any) -> int | None:
if key == "BOOKING_MAX_MONTHS":
return 12 if "max_months" not in kwargs else kwargs["max_months"]
return kwargs.get("default")
@pytest.mark.asyncio
@pytest.mark.parametrize("mock_logger", ["backend.services.bookings"], indirect=True)
async def test_get_bookings_for_room_success(
@@ -285,14 +291,7 @@ async def test_new_booking_success(
"backend.services.bookings.config", wraps=sys.modules["backend"].config
) as mock_config,
):
from typing import Any
from typing import cast
mock_config.side_effect = lambda key, **kwargs: ( # type: ignore
12
if key == "BOOKING_MAX_MONTHS"
else cast(Any, kwargs.get("default")) # type: ignore
)
mock_config.side_effect = _config_side_effect
# Patch session.scalars to simulate no overlap
mock_scalars_result = AsyncMock()
mock_scalars_result.first = MagicMock(return_value=None)
@@ -393,11 +392,13 @@ async def test_new_booking_constraints(
"backend.services.bookings.config", wraps=sys.modules["backend"].config
) as mock_config,
):
mock_config.side_effect = lambda key, *args, **kwargs: ( # type: ignore
max_months
if key == "BOOKING_MAX_MONTHS"
else kwargs.get("default") # type: ignore
)
def _config_side_effect_max_months(
key: str, *args: Any, **kwargs: Any
) -> int | None:
return max_months if key == "BOOKING_MAX_MONTHS" else kwargs.get("default")
mock_config.side_effect = _config_side_effect_max_months
# Patch session.scalars to simulate no overlap
mock_scalars_result = AsyncMock()
mock_scalars_result.first = MagicMock(return_value=None)
@@ -441,9 +442,7 @@ async def test_new_booking_overlap(
"backend.services.bookings.config", wraps=sys.modules["backend"].config
) as mock_config,
):
mock_config.side_effect = lambda key, **kwargs: ( # type: ignore
12 if key == "BOOKING_MAX_MONTHS" else kwargs.get("default") # type: ignore
) # type: ignore[no-untyped-def]
mock_config.side_effect = _config_side_effect
# Patch session.scalars to simulate overlap
overlap_booking: Booking = Booking(
room_id=1,
@@ -491,9 +490,7 @@ async def test_new_booking_attendees_exceed_capacity(
"backend.services.bookings.config", wraps=sys.modules["backend"].config
) as mock_config,
):
mock_config.side_effect = lambda key, **kwargs: ( # type: ignore
12 if key == "BOOKING_MAX_MONTHS" else kwargs.get("default") # type: ignore
)
mock_config.side_effect = _config_side_effect
# Patch session.scalars to simulate no overlap
mock_scalars_result = AsyncMock()
mock_scalars_result.first = MagicMock(return_value=None)
@@ -552,9 +549,7 @@ async def test_new_booking_database_error(
"backend.services.bookings.config", wraps=sys.modules["backend"].config
) as mock_config,
):
mock_config.side_effect = lambda key, **kwargs: ( # type: ignore
12 if key == "BOOKING_MAX_MONTHS" else kwargs.get("default") # type: ignore
)
mock_config.side_effect = _config_side_effect
# Patch session.scalars to simulate no overlap
mock_scalars_result = AsyncMock()
mock_scalars_result.first = MagicMock(return_value=None)