import datetime from sqlmodel import Session from in_game.gameplay_models import CACHE_LIMIT, Card, Player, Team, select from in_game.gameplay_queries import get_or_create_ai_card, get_card_or_none from tests.factory import session_fixture def test_create_card(session: Session): all_cards = session.exec(select(Card)).all() assert len(all_cards) == 42 # Updated count after adding Player 41 card_1 = session.get(Card, 1) card_2 = session.get(Card, 12) assert card_1.player_id == 1 assert card_1.team_id == 31 assert card_2.player_id == 12 assert card_2.team_id == 400 async def test_get_or_create_ai_card(session: Session): cached_card = session.get(Card, 1) assert cached_card.player_id == 1 assert cached_card.team_id == 31 this_player = session.get(Player, 1) this_team = session.get(Team, 31) new_card_1 = await get_or_create_ai_card(session, this_player, this_team) assert cached_card.created == new_card_1.created new_card_2 = await get_or_create_ai_card( session, player=session.get(Player, 30), team=this_team, dev_mode=True ) assert new_card_2.id == 71 # Updated to match next available ID after factory cards (1-70) # async def test_get_card_or_none(session: Session): # card_1 = session.get(Card, 1) # new_card_1 = await get_card_or_none(session, card_id=card_1.id) # assert card_1.created == new_card_1.created # assert session.get(Player, 538) is None # assert session.get(Team, 55) is None # new_card_2 = await get_card_or_none(session, card_id=55555) # print(f'new_card_2: {new_card_2}\nplayer: {new_card_2.player}\nteam: {new_card_2.team}') # assert new_card_2 is not None # assert new_card_2.player_id == 538 # assert new_card_2.team_id == 55 # assert session.get(Player, 538) is not None # assert session.get(Team, 55) is not None