78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
import pytest
|
|
|
|
from .test_helpers import DummyContext
|
|
import services.tools.manage_gameobject as manage_go_mod
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_look_at_vector_target(monkeypatch):
|
|
"""look_at action forwards look_at_target as a vector."""
|
|
captured = {}
|
|
|
|
async def fake_send(cmd, params, **kwargs):
|
|
captured["params"] = params
|
|
return {"success": True, "data": {"rotation": [0, 90, 0]}}
|
|
|
|
monkeypatch.setattr(manage_go_mod, "async_send_command_with_retry", fake_send)
|
|
|
|
resp = await manage_go_mod.manage_gameobject(
|
|
ctx=DummyContext(),
|
|
action="look_at",
|
|
target="MainCamera",
|
|
look_at_target=[10.0, 0.0, 5.0],
|
|
)
|
|
|
|
assert resp.get("success") is True
|
|
p = captured["params"]
|
|
assert p["action"] == "look_at"
|
|
assert p["target"] == "MainCamera"
|
|
assert p["look_at_target"] == [10.0, 0.0, 5.0]
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_look_at_string_target(monkeypatch):
|
|
"""look_at action forwards look_at_target as a GO name string."""
|
|
captured = {}
|
|
|
|
async def fake_send(cmd, params, **kwargs):
|
|
captured["params"] = params
|
|
return {"success": True, "data": {"rotation": [0, 45, 0]}}
|
|
|
|
monkeypatch.setattr(manage_go_mod, "async_send_command_with_retry", fake_send)
|
|
|
|
resp = await manage_go_mod.manage_gameobject(
|
|
ctx=DummyContext(),
|
|
action="look_at",
|
|
target="MainCamera",
|
|
look_at_target="Player",
|
|
look_at_up=[0, 1, 0],
|
|
)
|
|
|
|
assert resp.get("success") is True
|
|
p = captured["params"]
|
|
assert p["action"] == "look_at"
|
|
assert p["look_at_target"] == "Player"
|
|
assert p["look_at_up"] == [0, 1, 0]
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_look_at_without_target_still_sends(monkeypatch):
|
|
"""look_at without look_at_target should still send the command (C# will error)."""
|
|
captured = {}
|
|
|
|
async def fake_send(cmd, params, **kwargs):
|
|
captured["params"] = params
|
|
return {"success": False, "message": "look_at_target is required"}
|
|
|
|
monkeypatch.setattr(manage_go_mod, "async_send_command_with_retry", fake_send)
|
|
|
|
resp = await manage_go_mod.manage_gameobject(
|
|
ctx=DummyContext(),
|
|
action="look_at",
|
|
target="MainCamera",
|
|
)
|
|
|
|
p = captured["params"]
|
|
assert p["action"] == "look_at"
|
|
assert "look_at_target" not in p
|