chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
import pytest
|
||||
|
||||
from .test_helpers import DummyContext
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_manage_gameobject_uses_session_state(monkeypatch):
|
||||
"""Test that tools use session-stored active instance via middleware"""
|
||||
|
||||
from transport.unity_instance_middleware import UnityInstanceMiddleware, set_unity_instance_middleware
|
||||
|
||||
# Arrange: Initialize middleware and set a session-scoped active instance
|
||||
middleware = UnityInstanceMiddleware()
|
||||
set_unity_instance_middleware(middleware)
|
||||
|
||||
ctx = DummyContext()
|
||||
await middleware.set_active_instance(ctx, "SessionProj@AAAA1111")
|
||||
assert await middleware.get_active_instance(ctx) == "SessionProj@AAAA1111"
|
||||
|
||||
# Simulate middleware injection into request state
|
||||
await ctx.set_state("unity_instance", "SessionProj@AAAA1111")
|
||||
|
||||
captured = {}
|
||||
|
||||
# Monkeypatch transport to capture the resolved instance_id
|
||||
async def fake_send(command_type, params, **kwargs):
|
||||
captured["command_type"] = command_type
|
||||
captured["params"] = params
|
||||
captured["instance_id"] = kwargs.get("instance_id")
|
||||
return {"success": True, "data": {}}
|
||||
|
||||
import services.tools.manage_gameobject as mg
|
||||
monkeypatch.setattr(
|
||||
"services.tools.manage_gameobject.async_send_command_with_retry",
|
||||
fake_send,
|
||||
)
|
||||
|
||||
# Act: call tool - should use session state from context
|
||||
res = await mg.manage_gameobject(
|
||||
ctx,
|
||||
action="create",
|
||||
name="SessionSphere",
|
||||
primitive_type="Sphere",
|
||||
)
|
||||
|
||||
# Assert: uses session-stored instance
|
||||
assert res.get("success") is True
|
||||
assert captured.get("command_type") == "manage_gameobject"
|
||||
assert captured.get("instance_id") == "SessionProj@AAAA1111"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_manage_gameobject_without_active_instance(monkeypatch):
|
||||
"""Test that tools work with no active instance set (uses None/default)"""
|
||||
|
||||
from transport.unity_instance_middleware import UnityInstanceMiddleware, set_unity_instance_middleware
|
||||
|
||||
# Arrange: Initialize middleware with no active instance set
|
||||
middleware = UnityInstanceMiddleware()
|
||||
set_unity_instance_middleware(middleware)
|
||||
|
||||
ctx = DummyContext()
|
||||
assert await middleware.get_active_instance(ctx) is None
|
||||
# Don't set any state in context
|
||||
|
||||
captured = {}
|
||||
|
||||
async def fake_send(command_type, params, **kwargs):
|
||||
captured["instance_id"] = kwargs.get("instance_id")
|
||||
return {"success": True, "data": {}}
|
||||
|
||||
import services.tools.manage_gameobject as mg
|
||||
monkeypatch.setattr(
|
||||
"services.tools.manage_gameobject.async_send_command_with_retry",
|
||||
fake_send,
|
||||
)
|
||||
|
||||
# Act: call without active instance
|
||||
res = await mg.manage_gameobject(
|
||||
ctx,
|
||||
action="create",
|
||||
name="DefaultSphere",
|
||||
primitive_type="Sphere",
|
||||
)
|
||||
|
||||
# Assert: uses None (connection pool will pick default)
|
||||
assert res.get("success") is True
|
||||
assert captured.get("instance_id") is None
|
||||
Reference in New Issue
Block a user