import datetime from sqlmodel import Session, select from in_game.gameplay_models import Team, CACHE_LIMIT from in_game.gameplay_queries import get_team_or_none from tests.factory import session_fixture, create_incomplete_team, pytest def test_create_team(session: Session): team_31 = session.get(Team, 31) team_400 = session.get(Team, 400) team_69 = session.get(Team, 69) team_420 = session.get(Team, 420) team_3 = session.get(Team, 3) assert team_31.abbrev == 'NCB' assert team_400.abbrev == 'WV' assert team_69.abbrev == 'NCB3' assert team_420.abbrev == 'WV4' assert team_3.abbrev == 'BAL' def test_create_incomplete_team(session: Session): team_1 = create_incomplete_team(session) session.add(team_1) from sqlalchemy.exc import IntegrityError with pytest.raises(IntegrityError) as exc_info: session.commit() # Check that it's a NOT NULL constraint violation for ranking field (database agnostic) assert "ranking" in str(exc_info.value) assert "null" in str(exc_info.value).lower() async def test_team_cache(session: Session): team_31 = session.get(Team, 31) team_3 = session.get(Team, 3) assert (datetime.datetime.now() - team_3.created).total_seconds() > CACHE_LIMIT new_team_31 = await get_team_or_none(session, team_id=team_31.id) new_team_3 = await get_team_or_none(session, team_id=team_3.id) new_team_4 = await get_team_or_none(session, team_abbrev='NYY') assert team_31.created == new_team_31.created assert (datetime.datetime.now() - new_team_3.created).total_seconds() < CACHE_LIMIT assert new_team_4.created is not None