59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
import datetime
|
|
from sqlmodel import Session, select
|
|
from sqlite3 import IntegrityError
|
|
|
|
from in_game.gameplay_models import Team, get_team, CACHE_LIMIT
|
|
from factory import session_fixture, new_teams_fixture, pytest
|
|
|
|
def test_create_team(session: Session, new_teams: list[Team]):
|
|
team_1 = new_teams[0]
|
|
team_2 = new_teams[1]
|
|
|
|
session.add(team_1)
|
|
session.add(team_2)
|
|
session.commit()
|
|
|
|
assert team_1.abbrev == 'NCB'
|
|
assert team_1.id == 31
|
|
assert team_2.abbrev == 'WV'
|
|
assert team_2.id == 400
|
|
|
|
|
|
def test_create_incomplete_team(session: Session, new_teams: list[Team]):
|
|
team_1 = new_teams[2]
|
|
|
|
session.add(team_1)
|
|
|
|
with pytest.raises(Exception) as exc_info:
|
|
session.commit()
|
|
|
|
assert str(exc_info) == "<ExceptionInfo IntegrityError('(sqlite3.IntegrityError) NOT NULL constraint failed: team.ranking') tblen=24>"
|
|
|
|
|
|
async def test_team_cache(session: Session, new_teams: list[Team]):
|
|
team_1 = new_teams[0]
|
|
team_2 = new_teams[1]
|
|
team_3 = new_teams[3]
|
|
|
|
session.add(team_1)
|
|
session.add(team_2)
|
|
session.add(team_3)
|
|
session.commit()
|
|
|
|
assert (datetime.datetime.now() - team_3.created).total_seconds() > CACHE_LIMIT
|
|
|
|
new_team_1 = await get_team(session, team_id=team_1.id)
|
|
new_team_2 = await get_team(session, team_id=team_2.id)
|
|
new_team_3 = await get_team(session, team_id=team_3.id)
|
|
new_team_4 = await get_team(session, team_abbrev='NYY')
|
|
|
|
assert team_1.created == new_team_1.created
|
|
assert team_2.created == new_team_2.created
|
|
assert (datetime.datetime.now() - new_team_3.created).total_seconds() < CACHE_LIMIT
|
|
assert new_team_4.created is not None
|
|
|
|
|
|
|
|
|
|
|