diff --git a/command_logic/logic_gameplay.py b/command_logic/logic_gameplay.py index 7c45c18..7814455 100644 --- a/command_logic/logic_gameplay.py +++ b/command_logic/logic_gameplay.py @@ -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}", diff --git a/tests/test_post_game_render.py b/tests/test_post_game_render.py index 2470dfe..2054525 100644 --- a/tests/test_post_game_render.py +++ b/tests/test_post_game_render.py @@ -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(