using AIStudio.Assistants.SWOTAnalysis; using AIStudio.Tools.AssistantSessions; namespace AIStudio.Tests.Assistants.SWOTAnalysis; [TestFixture] public sealed class SwotAnalysisSessionStateTests { [Test] public void TheStructuredResultSurvivesAnAssistantSessionSnapshot() { var key = new AssistantSessionStateKey("analysisResult"); var writer = new AssistantSessionStateWriter(); writer.Set(key, new SwotAnalysisResult { MatrixHeading = "SWOT Matrix", Strengths = new() { Findings = [Finding()] }, }); SwotAnalysisResult? restored = null; var reader = new AssistantSessionStateReader(writer.ToDictionary(), "SWOT Analysis"); reader.Restore(key, value => restored = value); Assert.Multiple(() => { Assert.That(restored, Is.Not.Null); Assert.That(restored!.MatrixHeading, Is.EqualTo("SWOT Matrix")); Assert.That(restored.Strengths.Findings.Single().Summary, Is.EqualTo("Experienced team")); }); } [Test] public void CategoryProgressSurvivesAnAssistantSessionSnapshot() { var key = new AssistantSessionStateKey>("categoryAnalysisProgress"); var writer = new AssistantSessionStateWriter(); writer.SetDictionary(key, new Dictionary { [SwotAnalysisCategory.STRENGTHS] = new(SwotCategoryAnalysisStatus.COMPLETED, new SwotCategoryAnalysisResult { Findings = [Finding()] }), [SwotAnalysisCategory.WEAKNESSES] = new(SwotCategoryAnalysisStatus.RUNNING), }); Dictionary restored = []; var reader = new AssistantSessionStateReader(writer.ToDictionary(), "SWOT Analysis"); reader.RestoreDictionary(key, restored); Assert.Multiple(() => { Assert.That(restored[SwotAnalysisCategory.STRENGTHS].Status, Is.EqualTo(SwotCategoryAnalysisStatus.COMPLETED)); Assert.That(restored[SwotAnalysisCategory.STRENGTHS].Result!.Findings.Single().Summary, Is.EqualTo("Experienced team")); Assert.That(restored[SwotAnalysisCategory.WEAKNESSES].Status, Is.EqualTo(SwotCategoryAnalysisStatus.RUNNING)); }); } private static SwotFinding Finding() => new() { Summary = "Experienced team", Explanation = "The documents describe long employee tenure.", }; }