mirror of
https://github.com/xlorepdarkhelm/numinar-coding-project.git
synced 2026-09-09 17:45:35 -04:00
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:
@@ -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():
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user