paper-dynasty-discord/tests/gameplay_models/test_player_model.py
Cal Corum bfd72ae0f5 Update logging to RotatingFileHandler
Add auto game end
Calculate stats and decisions
Support raising instantiated exceptions
2024-11-09 23:14:54 -06:00

70 lines
2.5 KiB
Python

import datetime
import pytest
from sqlmodel import Session
from in_game.gameplay_models import CACHE_LIMIT, Player, player_description, select
from in_game.gameplay_queries import get_player_or_none, get_player_id_from_dict
from tests.factory import session_fixture
def test_create_player(session: Session):
all_players = session.exec(select(Player)).all()
assert len(all_players) == 42
player_1 = session.get(Player, 1)
player_2 = session.get(Player, 12)
assert player_1.name == 'Player 0'
assert player_1.cardset_id == 2
assert player_1.pos_1 == 'C'
assert player_1.description == '2024'
assert player_1.franchise == 'Baltimore Orioles'
assert player_2.cardset_id == 1
assert player_2.description == 'Live'
assert player_2.mlbclub == 'New York Yankees'
async def test_cached_players(session: Session):
player_1 = session.get(Player, 1)
player_2 = session.get(Player, 69)
assert (datetime.datetime.now() - player_2.created).total_seconds() > CACHE_LIMIT
new_player_1 = await get_player_or_none(session, player_id=player_1.id)
new_player_2 = await get_player_or_none(session, player_id=69)
new_player_3 = await get_player_or_none(session, player_id=6969)
assert player_1.created == new_player_1.created
assert (datetime.datetime.now() - new_player_2.created).total_seconds() < CACHE_LIMIT
assert new_player_3 is not None
def test_player_description(session: Session):
player_1 = session.get(Player, 1)
player_2 = session.get(Player, 2)
player_dict = {'player_id': player_2.id, 'p_name': player_2.name, 'description': player_2.description}
assert player_1.name_with_desc == f'2024 Player 0'
assert player_description(player_dict=player_dict) == f'Live Player 1'
def test_player_id_from_dict(session: Session):
assert get_player_id_from_dict({'player_id': 1337}) == 1337
assert get_player_id_from_dict({'id': 6969}) == 6969
with pytest.raises(KeyError) as exc_info:
get_player_id_from_dict({})
assert str(exc_info) == "<ExceptionInfo KeyError('Player ID could not be extracted from json data') tblen=3>"
def test_player_card_link(session: Session):
player_1 = session.get(Player, 70)
assert player_1.b_card_url == 'player_69_battingcard'
assert player_1.p_card_url == 'player_69_pitchingcard'
assert player_1.name_card_link('pitching') == '[Player 69](player_69_pitchingcard)'
assert player_1.name_card_link('batting') == '[Player 69](player_69_battingcard)'