159 lines
4.5 KiB
Python
159 lines
4.5 KiB
Python
import pytest
|
|
from sqlalchemy import delete as sadelete
|
|
from sqlalchemy.sql.functions import sum, count
|
|
from sqlmodel import Session, delete
|
|
|
|
from in_game.gameplay_models import Game, Lineup, GameCardsetLink, Play, 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 == 'minor-league'
|
|
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(Exception) as exc_info:
|
|
get_channel_game_or_none(session, 5678)
|
|
|
|
assert str(exc_info) == "<ExceptionInfo Exception('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
|
|
|
|
|
|
def test_get_scorebug(session: Session):
|
|
game_1 = session.get(Game, 1)
|
|
scorebug = game_1.get_scorebug_embed(session)
|
|
|
|
assert scorebug.title == 'CornBelters @ Black Bears - Minor League'
|
|
assert scorebug.color.value == int('a6ce39', 16)
|
|
|
|
game_3 = session.get(Game, 3)
|
|
scorebug = game_3.get_scorebug_embed(session)
|
|
|
|
assert '0 Outs' in scorebug.fields[0].value
|
|
|
|
|
|
def test_sum_function(session: Session):
|
|
"""
|
|
Testing out the sqlalchemy functions
|
|
"""
|
|
st = select(
|
|
sum(Game.away_team_id).label('nice'),
|
|
count(Game.active)
|
|
)
|
|
print(f'sql: {st}')
|
|
result = session.exec(st)
|
|
print(f'result: {result}')
|
|
one_result = result.one()
|
|
print(f'one: {one_result}')
|
|
print(f'sum: {one_result[0]} / count: {one_result[1]}')
|
|
|
|
assert False == False
|
|
|
|
|
|
def test_initialize_play(session: Session):
|
|
game_1 = session.get(Game, 1)
|
|
game_3 = session.get(Game, 3)
|
|
g1_play = game_1.initialize_play(session)
|
|
|
|
assert game_1.id == 1
|
|
|
|
play_count = session.exec(select(Play.id)).all()
|
|
|
|
assert len(play_count) == 2
|
|
|
|
g3_play = game_3.initialize_play(session)
|
|
play_count = session.exec(select(Play.id)).all()
|
|
|
|
assert g3_play.play_num == 1
|
|
assert g3_play.starting_outs == 0
|
|
assert len(play_count) == 3
|
|
|