using System.Collections.Generic; using LLM.Editor.Commands; using LLM.Editor.Data; using NUnit.Framework; namespace LLM.Editor.Tests.Unit { [TestFixture] public class GetProjectSettingSchemaCommandTests { private CommandContext _context; [SetUp] public void SetUp() { _context = new CommandContext(); } [Test] public void Execute_WithValidApiClass_ReturnsSuccessAndSchema() { // Arrange var command = new GetProjectSettingSchemaCommand { apiClassName = "UnityEngine.Time" }; // Act var result = command.Execute(_context); // Assert Assert.AreEqual(CommandOutcome.Success, result); Assert.IsInstanceOf>(_context.CurrentSubject); var schema = (Dictionary)_context.CurrentSubject; Assert.IsTrue(schema.ContainsKey("fixedDeltaTime")); Assert.IsTrue(schema.ContainsKey("timeScale")); } [Test] public void Execute_WithInvalidApiClass_ReturnsError() { // Arrange var command = new GetProjectSettingSchemaCommand { apiClassName = "UnityEngine.NonExistentClass" }; // Act var result = command.Execute(_context); // Assert Assert.AreEqual(CommandOutcome.Error, result); Assert.IsTrue(_context.ErrorMessage.Contains("Could not find a class named")); } [Test] public void Execute_WithNullApiClass_ReturnsError() { // Arrange var command = new GetProjectSettingSchemaCommand { apiClassName = null }; // Act var result = command.Execute(_context); // Assert Assert.AreEqual(CommandOutcome.Error, result); Assert.IsTrue(_context.ErrorMessage.Contains("'apiClassName' is required")); } } }