paper-dynasty-discord/tests/gameplay_models/test_game_model.py
2024-10-13 20:06:25 -05:00

107 lines
3.2 KiB
Python

import pytest
from sqlalchemy import delete as sadelete
from sqlmodel import Session, delete
from in_game.gameplay_models import Game, Lineup, GameCardsetLink, select
from in_game.gameplay_queries import get_channel_game_or_none, get_active_games_by_team
from factory import session_fixture
def test_create_game(session: Session):
game_1 = session.get(Game, 1)
game_2 = session.get(Game, 2)
assert game_1.away_team_id == 31
assert game_1.home_team_id == 400
assert game_1.channel_id == 1234
assert game_1.season == 9
assert game_1.active == True
assert game_1.is_pd == True
assert game_1.ranked == False
assert game_1.week_num == None
assert game_1.game_num == None
assert game_1.away_roster_id == None
assert game_1.home_roster_id == None
assert game_1.first_message == None
assert game_1.ai_team == 'away'
assert game_1.game_type == None
assert game_2.active == False
assert game_2.is_pd == True
assert game_2.ranked == True
assert game_2.week_num == 6
assert game_2.game_num == 9
assert game_2.away_roster_id == 69
assert game_2.home_roster_id == 420
assert game_2.first_message == '12345678'
assert game_2.ai_team == 'home'
assert game_2.game_type == 'minor-league'
def test_select_all(session: Session):
games = session.exec(select(Game)).all()
assert len(games) == 3
session.execute(sadelete(Game))
session.commit()
games = session.exec(select(Game)).all()
assert len(games) == 0
def test_games_by_channel(session: Session):
assert get_channel_game_or_none(session, 1234) is not None
assert get_channel_game_or_none(session, 5678) is not None
assert get_channel_game_or_none(session, 69) is None
game_2 = session.get(Game, 2)
game_2.active = True
session.add(game_2)
session.commit()
with pytest.raises(LookupError) as exc_info:
get_channel_game_or_none(session, 5678)
assert str(exc_info) == "<ExceptionInfo LookupError('Too many games found in get_channel_game_or_none') tblen=2>"
game_3 = session.get(Game, 3)
game_2.active = False
game_3.active = False
session.add(game_2)
session.add(game_3)
session.commit()
assert get_channel_game_or_none(session, 5678) is None
def test_games_by_team(session: Session):
assert len(get_active_games_by_team(session, team_id=69)) == 1
game_2 = session.get(Game, 2)
game_2.active = True
session.add(game_2)
session.commit()
assert len(get_active_games_by_team(session, team_id=69)) == 2
game_3 = session.get(Game, 3)
game_3.active = False
game_2.active = False
session.add(game_3)
session.add(game_2)
session.commit()
assert len(get_active_games_by_team(session, team_id=69)) == 0
def test_delete_game(session: Session):
game_1 = session.get(Game, 1)
# session.execute(sadelete(GameCardsetLink).where(GameCardsetLink.game == game_1))
# session.delete(game_1)
session.delete(game_1)
bad_lineups = session.exec(select(Lineup).where(Lineup.game_id == 1)).all()
bad_links = session.exec(select(GameCardsetLink).where(GameCardsetLink.game_id == 1)).all()
assert len(bad_lineups) == 0
assert len(bad_links) == 0