import asyncio from .test_helpers import DummyContext import services.tools.manage_scriptable_object as mod def test_manage_scriptable_object_forwards_create_params(monkeypatch): captured = {} async def fake_async_send(cmd, params, **kwargs): captured["cmd"] = cmd captured["params"] = params return {"success": True, "data": {"ok": True}} monkeypatch.setattr(mod, "async_send_command_with_retry", fake_async_send) ctx = DummyContext() ctx.set_state("unity_instance", "UnityMCPTests@dummy") result = asyncio.run( mod.manage_scriptable_object( ctx=ctx, action="create", type_name="My.Namespace.TestDefinition", folder_path="Assets/Temp/Foo", asset_name="Bar", overwrite="true", patches='[{"propertyPath":"displayName","op":"set","value":"Hello"}]', ) ) assert result["success"] is True assert captured["cmd"] == "manage_scriptable_object" assert captured["params"]["action"] == "create" assert captured["params"]["typeName"] == "My.Namespace.TestDefinition" assert captured["params"]["folderPath"] == "Assets/Temp/Foo" assert captured["params"]["assetName"] == "Bar" assert captured["params"]["overwrite"] is True assert isinstance(captured["params"]["patches"], list) assert captured["params"]["patches"][0]["propertyPath"] == "displayName" def test_manage_scriptable_object_forwards_modify_params(monkeypatch): captured = {} async def fake_async_send(cmd, params, **kwargs): captured["cmd"] = cmd captured["params"] = params return {"success": True, "data": {"ok": True}} monkeypatch.setattr(mod, "async_send_command_with_retry", fake_async_send) ctx = DummyContext() ctx.set_state("unity_instance", "UnityMCPTests@dummy") result = asyncio.run( mod.manage_scriptable_object( ctx=ctx, action="modify", target='{"guid":"abc"}', patches=[{"propertyPath": "materials.Array.size", "op": "array_resize", "value": 2}], ) ) assert result["success"] is True assert captured["cmd"] == "manage_scriptable_object" assert captured["params"]["action"] == "modify" assert captured["params"]["target"] == {"guid": "abc"} assert captured["params"]["patches"][0]["op"] == "array_resize"