paper-dynasty-discord/tests/gameplay_models/test_batterscouting_model.py
Cal Corum 3d333dabc3 Update api logging
New Position exception
Pull scouting data with lineups
More bunt types
String validation on gameplay models
AI Defensive alignment
2024-11-16 00:31:54 -06:00

227 lines
8.0 KiB
Python

import pytest
from sqlmodel import Session, select, func
from in_game.gameplay_models import Card
from in_game.gameplay_queries import get_batter_scouting_or_none, get_card_or_none, get_pitcher_scouting_or_none
from tests.factory import session_fixture
sample_ratings_query = {
"count": 2,
"ratings": [
{
"id": 7673,
"battingcard": {
"id": 3837,
"player": {
"player_id": 395,
"p_name": "Cedric Mullins",
"cost": 256,
"image": "https://pd.manticorum.com/api/v2/players/395/battingcard?d=2023-11-19",
"image2": None,
"mlbclub": "Baltimore Orioles",
"franchise": "Baltimore Orioles",
"cardset": {
"id": 1,
"name": "2021 Season",
"description": "Cards based on the full 2021 season",
"event": None,
"for_purchase": True,
"total_cards": 791,
"in_packs": True,
"ranked_legal": False
},
"set_num": 395,
"rarity": {
"id": 2,
"value": 3,
"name": "All-Star",
"color": "FFD700"
},
"pos_1": "CF",
"pos_2": None,
"pos_3": None,
"pos_4": None,
"pos_5": None,
"pos_6": None,
"pos_7": None,
"pos_8": None,
"headshot": "https://www.baseball-reference.com/req/202206291/images/headshots/2/24bf4355_mlbam.jpg",
"vanity_card": None,
"strat_code": "17929",
"bbref_id": "mullice01",
"fangr_id": None,
"description": "2021",
"quantity": 999,
"mlbplayer": {
"id": 396,
"first_name": "Cedric",
"last_name": "Mullins",
"key_fangraphs": 17929,
"key_bbref": "mullice01",
"key_retro": "mullc002",
"key_mlbam": 656775,
"offense_col": 1
}
},
"variant": 0,
"steal_low": 9,
"steal_high": 12,
"steal_auto": True,
"steal_jump": 0.2222222222222222,
"bunting": "C",
"hit_and_run": "B",
"running": 13,
"offense_col": 1,
"hand": "L"
},
"vs_hand": "L",
"pull_rate": 0.43888889,
"center_rate": 0.32777778,
"slap_rate": 0.23333333,
"homerun": 2.25,
"bp_homerun": 5.0,
"triple": 0.0,
"double_three": 0.0,
"double_two": 2.4,
"double_pull": 7.2,
"single_two": 4.6,
"single_one": 3.5,
"single_center": 5.85,
"bp_single": 5.0,
"hbp": 2.0,
"walk": 9.0,
"strikeout": 23.0,
"lineout": 3.0,
"popout": 6.0,
"flyout_a": 0.0,
"flyout_bq": 0.15,
"flyout_lf_b": 2.8,
"flyout_rf_b": 3.75,
"groundout_a": 0.0,
"groundout_b": 9.0,
"groundout_c": 13.5,
"avg": 0.2851851851851852,
"obp": 0.387037037037037,
"slg": 0.5060185185185185
},
{
"id": 7674,
"battingcard": {
"id": 3837,
"player": {
"player_id": 395,
"p_name": "Cedric Mullins",
"cost": 256,
"image": "https://pd.manticorum.com/api/v2/players/395/battingcard?d=2023-11-19",
"image2": None,
"mlbclub": "Baltimore Orioles",
"franchise": "Baltimore Orioles",
"cardset": {
"id": 1,
"name": "2021 Season",
"description": "Cards based on the full 2021 season",
"event": None,
"for_purchase": True,
"total_cards": 791,
"in_packs": True,
"ranked_legal": False
},
"set_num": 395,
"rarity": {
"id": 2,
"value": 3,
"name": "All-Star",
"color": "FFD700"
},
"pos_1": "CF",
"pos_2": None,
"pos_3": None,
"pos_4": None,
"pos_5": None,
"pos_6": None,
"pos_7": None,
"pos_8": None,
"headshot": "https://www.baseball-reference.com/req/202206291/images/headshots/2/24bf4355_mlbam.jpg",
"vanity_card": None,
"strat_code": "17929",
"bbref_id": "mullice01",
"fangr_id": None,
"description": "2021",
"quantity": 999,
"mlbplayer": {
"id": 396,
"first_name": "Cedric",
"last_name": "Mullins",
"key_fangraphs": 17929,
"key_bbref": "mullice01",
"key_retro": "mullc002",
"key_mlbam": 656775,
"offense_col": 1
}
},
"variant": 0,
"steal_low": 9,
"steal_high": 12,
"steal_auto": True,
"steal_jump": 0.2222222222222222,
"bunting": "C",
"hit_and_run": "B",
"running": 13,
"offense_col": 1,
"hand": "L"
},
"vs_hand": "R",
"pull_rate": 0.43377483,
"center_rate": 0.32119205,
"slap_rate": 0.24503311,
"homerun": 2.0,
"bp_homerun": 7.0,
"triple": 0.0,
"double_three": 0.0,
"double_two": 2.7,
"double_pull": 7.95,
"single_two": 3.3,
"single_one": 0.0,
"single_center": 8.6,
"bp_single": 5.0,
"hbp": 1.0,
"walk": 12.9,
"strikeout": 11.1,
"lineout": 8.0,
"popout": 11.0,
"flyout_a": 0.0,
"flyout_bq": 0.4,
"flyout_lf_b": 4.05,
"flyout_rf_b": 6.0,
"groundout_a": 0.0,
"groundout_b": 3.0,
"groundout_c": 14.0,
"avg": 0.2828703703703704,
"obp": 0.4115740740740741,
"slg": 0.5342592592592592
}
]
}
async def test_create_scouting(session: Session):
this_card = await get_card_or_none(session, card_id=1405)
assert this_card.player.id == 395
assert this_card.team.id == 31
assert this_card.batterscouting.battingcard_id == sample_ratings_query["ratings"][0]['battingcard']['id']
# this_scouting = await get_batter_scouting_or_none(session, this_card)
# assert this_scouting.battingcard_id == sample_ratings_query["ratings"][0]['battingcard']['id']
# this_card = await get_card_or_none(session, card_id=1406)
# assert this_card.player.id == 161
# assert this_card.team.id == 31
# this_scouting = await get_pitcher_scouting_or_none(session, this_card)
# assert this_scouting.pitchingcard_id == 4294