paper-dynasty-discord/tests/gameplay_models/test_team_model.py
Cal Corum 3debfd6e82 Catchup commit
Includes discord_ui refactor, testing overhaul, addition of
2025-07-22 09:22:19 -05:00

54 lines
1.6 KiB
Python

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