66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
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]
|