123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using NUnit.Framework;
- using LLM.Editor.Commands;
- using LLM.Editor.Data;
- using LLM.Editor.Core;
- using Newtonsoft.Json.Linq;
- using System.Collections.Generic;
- namespace LLM.Editor.Tests.Unit
- {
- [TestFixture]
- public class UpdateWorkingContextCommandTests
- {
- private CommandContext _context;
- [SetUp]
- public void SetUp()
- {
- _context = new CommandContext();
- // Start a session to ensure file operations in SessionManager work correctly.
- SessionManager.StartNewSession();
- // Ensure a clean slate for each test
- SessionManager.SaveWorkingContext(new JObject());
- }
- [TearDown]
- public void TearDown()
- {
- // Clean up session state after tests
- SessionManager.EndSession();
- }
- [Test]
- public void Execute_WithUpdates_MergesDataIntoWorkingContext()
- {
- // Arrange
- var initialContext = new JObject { ["existingKey"] = "existingValue" };
- SessionManager.SaveWorkingContext(initialContext);
- var jsonParams = @"{
- ""updates"": {
- ""newKey"": ""newValue"",
- ""existingKey"": ""updatedValue""
- }
- }";
- var command = new UpdateWorkingContextCommand(jsonParams);
- // Act
- var outcome = command.Execute(_context);
- // Assert
- var finalContext = SessionManager.LoadWorkingContext();
- Assert.AreEqual(CommandOutcome.Success, outcome);
- Assert.AreEqual("newValue", (string)finalContext["newKey"]);
- Assert.AreEqual("updatedValue", (string)finalContext["existingKey"]);
- }
- [Test]
- public void Execute_WithPlanUpdate_PopulatesRuntimeContextPlan()
- {
- // Arrange
- var jsonParams = @"{
- ""updates"": {
- ""plan"": [""Step 1"", ""Step 2""]
- }
- }";
- var command = new UpdateWorkingContextCommand(jsonParams);
- // Act
- var outcome = command.Execute(_context);
- // Assert
- Assert.AreEqual(CommandOutcome.Success, outcome);
- Assert.IsNotNull(_context.Plan);
- Assert.AreEqual(2, _context.Plan.Count);
- Assert.AreEqual("Step 1", _context.Plan[0]);
- }
- [Test]
- public void Execute_WithKeysToRemove_RemovesDataFromWorkingContext()
- {
- // Arrange
- var initialContext = new JObject { ["key1"] = "value1", ["key2"] = "value2" };
- SessionManager.SaveWorkingContext(initialContext);
- const string jsonParams = @"{
- ""keysToRemove"": [""key1""]
- }";
- var command = new UpdateWorkingContextCommand(jsonParams);
- // Act
- var outcome = command.Execute(_context);
- // Assert
- var finalContext = SessionManager.LoadWorkingContext();
- Assert.AreEqual(CommandOutcome.Success, outcome);
- Assert.IsFalse(finalContext.ContainsKey("key1"));
- Assert.IsTrue(finalContext.ContainsKey("key2"));
- }
- [Test]
- public void Execute_WithClearAll_WipesWorkingContext()
- {
- // Arrange
- var initialContext = new JObject { ["key1"] = "value1" };
- SessionManager.SaveWorkingContext(initialContext);
- _context.Plan = new List<string> { "an old plan" };
- var jsonParams = @"{ ""clearAll"": true }";
- var command = new UpdateWorkingContextCommand(jsonParams);
- // Act
- var outcome = command.Execute(_context);
- // Assert
- var finalContext = SessionManager.LoadWorkingContext();
- Assert.AreEqual(CommandOutcome.Success, outcome);
- Assert.AreEqual(0, finalContext.Count);
- Assert.IsNull(_context.Plan, "Runtime context plan should also be cleared.");
- }
- }
- }
|