Merge pull request 'test(dev_tools): fix dead render mock in test_successful_batter_flow (#169)' (#170) from issue/169-test-dev-tools-refractor-test-render-step-mock-is into main
Reviewed-on: #170 Reviewed-by: Claude Reviewer <cal.corum+claude-reviewer@gmail.com>
This commit is contained in:
commit
9127c9a00b
@ -388,7 +388,13 @@ class TestRefractorTestExecute:
|
||||
|
||||
async def test_successful_batter_flow(self, mock_interaction, mock_bot, base_embed):
|
||||
"""Full happy path: game created, plays inserted, stats updated,
|
||||
tier-up detected, card rendered."""
|
||||
tier-up detected, card rendered (200 OK from aiohttp render endpoint).
|
||||
|
||||
Previously the render step was stubbed via a dead db_get mock; the
|
||||
actual render call uses aiohttp.ClientSession directly, so the mock
|
||||
was never consumed and the test hit the non-fatal except branch
|
||||
(⚠️ Card render failed) instead of the happy path.
|
||||
"""
|
||||
from cogs.dev_tools import DevToolsCog
|
||||
|
||||
cog = DevToolsCog(mock_bot)
|
||||
@ -413,9 +419,23 @@ class TestRefractorTestExecute:
|
||||
],
|
||||
}
|
||||
|
||||
mock_render_resp = MagicMock()
|
||||
mock_render_resp.status = 200
|
||||
|
||||
# sess.get(url) must return an async context manager (not a coroutine),
|
||||
# so get_cm is a MagicMock with explicit __aenter__/__aexit__.
|
||||
get_cm = MagicMock()
|
||||
get_cm.__aenter__ = AsyncMock(return_value=mock_render_resp)
|
||||
get_cm.__aexit__ = AsyncMock(return_value=None)
|
||||
|
||||
mock_sess = MagicMock()
|
||||
mock_sess.__aenter__ = AsyncMock(return_value=mock_sess)
|
||||
mock_sess.__aexit__ = AsyncMock(return_value=None)
|
||||
mock_sess.get.return_value = get_cm
|
||||
|
||||
with (
|
||||
patch("cogs.dev_tools.db_post", new_callable=AsyncMock) as mock_post,
|
||||
patch("cogs.dev_tools.db_get", new_callable=AsyncMock) as mock_get,
|
||||
patch("cogs.dev_tools.aiohttp.ClientSession", return_value=mock_sess),
|
||||
):
|
||||
mock_post.side_effect = [
|
||||
game_response, # POST games
|
||||
@ -424,7 +444,6 @@ class TestRefractorTestExecute:
|
||||
stats_response, # POST season-stats/update-game
|
||||
eval_response, # POST refractor/evaluate-game
|
||||
]
|
||||
mock_get.return_value = {"image_url": "https://s3.example.com/card.png"}
|
||||
|
||||
await cog._execute_refractor_test(
|
||||
interaction=mock_interaction,
|
||||
@ -443,6 +462,7 @@ class TestRefractorTestExecute:
|
||||
result_text = "\n".join(f.value for f in final_embed.fields if f.value)
|
||||
assert "✅" in result_text
|
||||
assert "game" in result_text.lower()
|
||||
assert "✅ Card rendered + S3 upload triggered" in result_text
|
||||
|
||||
async def test_stops_on_game_creation_failure(
|
||||
self, mock_interaction, mock_bot, base_embed
|
||||
|
||||
Loading…
Reference in New Issue
Block a user