70 lines
2.5 KiB
Python
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) == 43 # Updated count after adding Player 41
|
|
|
|
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.batter_card_url == 'player_69_battingcard'
|
|
assert player_1.pitcher_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)'
|