fix: use card_type field instead of track_name string in variant renders (#149)
All checks were successful
Ruff Lint / lint (pull_request) Successful in 29s
All checks were successful
Ruff Lint / lint (pull_request) Successful in 29s
Closes #149 Replaces fragile track_name string matching ('Pitcher' check) with the structured card_type field ('sp', 'rp', 'batter') already present in refractor API data. Prevents silent wrong-type renders when track_name varies ('Starting Pitcher', 'SP', etc.). Updates test fixtures and adds assertions that verify the correct card type URL segment. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
9127c9a00b
commit
9eb9669151
@ -4293,8 +4293,8 @@ async def _trigger_variant_renders(tier_ups: list) -> dict:
|
||||
if variant is None:
|
||||
continue
|
||||
player_id = tier_up["player_id"]
|
||||
track = tier_up.get("track_name", "Batter")
|
||||
card_type = "pitching" if track.lower() == "pitcher" else "batting"
|
||||
ct = tier_up.get("card_type", "batter")
|
||||
card_type = "pitching" if ct in ("sp", "rp") else "batting"
|
||||
try:
|
||||
result = await db_get(
|
||||
f"players/{player_id}/{card_type}card/{today}/{variant}",
|
||||
|
||||
@ -12,10 +12,15 @@ class TestTriggerVariantRenders:
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_calls_render_url_for_each_tier_up(self):
|
||||
"""Each tier-up with variant_created triggers a card render GET request."""
|
||||
"""Each tier-up with variant_created triggers a card render GET request.
|
||||
|
||||
card_type field ('sp', 'rp', 'batter') determines the render URL segment
|
||||
('pitchingcard' or 'battingcard'). This prevents silent wrong-type renders
|
||||
when track_name strings vary ('Pitcher', 'Starting Pitcher', 'SP', etc.).
|
||||
"""
|
||||
tier_ups = [
|
||||
{"player_id": 100, "variant_created": 7, "track_name": "Batter"},
|
||||
{"player_id": 200, "variant_created": 3, "track_name": "Pitcher"},
|
||||
{"player_id": 100, "variant_created": 7, "card_type": "batter"},
|
||||
{"player_id": 200, "variant_created": 3, "card_type": "sp"},
|
||||
]
|
||||
|
||||
with patch(
|
||||
@ -26,14 +31,20 @@ class TestTriggerVariantRenders:
|
||||
|
||||
assert mock_get.call_count == 2
|
||||
call_args_list = [call.args[0] for call in mock_get.call_args_list]
|
||||
assert any("100" in url and "7" in url for url in call_args_list)
|
||||
assert any("200" in url and "3" in url for url in call_args_list)
|
||||
assert any(
|
||||
"100" in url and "battingcard" in url and "7" in url
|
||||
for url in call_args_list
|
||||
)
|
||||
assert any(
|
||||
"200" in url and "pitchingcard" in url and "3" in url
|
||||
for url in call_args_list
|
||||
)
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_skips_tier_ups_without_variant(self):
|
||||
"""Tier-ups without variant_created are skipped."""
|
||||
tier_ups = [
|
||||
{"player_id": 100, "track_name": "Batter"},
|
||||
{"player_id": 100, "card_type": "batter"},
|
||||
]
|
||||
|
||||
with patch(
|
||||
@ -46,7 +57,7 @@ class TestTriggerVariantRenders:
|
||||
async def test_api_failure_does_not_raise(self):
|
||||
"""Render trigger failures are swallowed — fire-and-forget."""
|
||||
tier_ups = [
|
||||
{"player_id": 100, "variant_created": 7, "track_name": "Batter"},
|
||||
{"player_id": 100, "variant_created": 7, "card_type": "batter"},
|
||||
]
|
||||
|
||||
with patch(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user