"""Test the Station and StationRecipeAssignment ORM models.""" import pytest from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from models.station import Station, StationRecipeAssignment from tests.conftest import _create_user, create_test_recipe async def test_create_station(db_session: AsyncSession): admin = await _create_user(db_session, username="admin1", is_admin=True) station = Station( code="ST-001", name="Linea 1", location="Reparto Nord", created_by=admin.id, ) db_session.add(station) await db_session.flush() await db_session.refresh(station) assert station.id is not None assert station.active is True assert station.created_at is not None async def test_station_code_is_unique(db_session: AsyncSession): from sqlalchemy.exc import IntegrityError admin = await _create_user(db_session, username="admin2", is_admin=True) db_session.add(Station(code="ST-DUP", name="A", created_by=admin.id)) await db_session.flush() db_session.add(Station(code="ST-DUP", name="B", created_by=admin.id)) with pytest.raises(IntegrityError): await db_session.flush() await db_session.rollback() async def test_assign_recipe_to_station(db_session: AsyncSession): admin = await _create_user(db_session, username="admin3", is_admin=True) station = Station(code="ST-002", name="Linea 2", created_by=admin.id) db_session.add(station) await db_session.flush() recipe = await create_test_recipe(db_session, user_id=admin.id, code="REC-X") assignment = StationRecipeAssignment( station_id=station.id, recipe_id=recipe.id, assigned_by=admin.id, ) db_session.add(assignment) await db_session.flush() result = await db_session.execute( select(StationRecipeAssignment).where( StationRecipeAssignment.station_id == station.id ) ) assignments = result.scalars().all() assert len(assignments) == 1 assert assignments[0].recipe_id == recipe.id