import pytest
from .test_helpers import DummyContext
import services.tools.manage_gameobject as manage_go_mod
@pytest.mark.asyncio
async def test_manage_gameobject_boolean_coercion(monkeypatch):
"""Test that string boolean values are properly coerced for valid actions."""
captured = {}
async def fake_send(cmd, params, **kwargs):
captured["params"] = params
return {"success": True, "data": {}}
monkeypatch.setattr(
manage_go_mod,
"async_send_command_with_retry",
fake_send,
)
# Test boolean coercion with "modify" action (valid action)
resp = await manage_go_mod.manage_gameobject(
ctx=DummyContext(),
action="modify",
target="Player",
set_active="true", # String should be coerced to bool
)
assert resp.get("success") is True
assert captured["params"]["action"] == "modify"
assert captured["params"]["target"] == "Player"
# setActive string "true" is coerced to bool True
assert captured["params"]["setActive"] is True
@pytest.mark.asyncio
async def test_manage_gameobject_create_with_tag(monkeypatch):
"""Test that create action properly passes tag parameter."""
captured = {}
async def fake_send(cmd, params, **kwargs):
captured["params"] = params
return {"success": True, "data": {}}
monkeypatch.setattr(
manage_go_mod,
"async_send_command_with_retry",
fake_send,
)
resp = await manage_go_mod.manage_gameobject(
ctx=DummyContext(),
action="create",
name="TestObject",
tag="Player",
position=[1.0, 2.0, 3.0],
)
assert resp.get("success") is True
p = captured["params"]
assert p["action"] == "create"
assert p["name"] == "TestObject"
assert p["tag"] == "Player"
assert p["position"] == [1.0, 2.0, 3.0]