mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-05 07:07:21 +00:00
Added a SWOT analysis assistant (#1122)
Co-authored-by: hart_s3 <sabrina.hartmann@dlr.de>
This commit is contained in:
1 parent
6cb20fd75a
commit
060a2a5734
87 files changed
+4601
-45
No files matched your search
@@ -0,0 +1,60 @@
|
||||
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<SwotAnalysisResult?>("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<Dictionary<SwotAnalysisCategory, SwotCategoryAnalysisProgress>>("categoryAnalysisProgress");
|
||||
var writer = new AssistantSessionStateWriter();
|
||||
writer.SetDictionary(key, new Dictionary<SwotAnalysisCategory, SwotCategoryAnalysisProgress>
|
||||
{
|
||||
[SwotAnalysisCategory.STRENGTHS] = new(SwotCategoryAnalysisStatus.COMPLETED, new SwotCategoryAnalysisResult { Findings = [Finding()] }),
|
||||
[SwotAnalysisCategory.WEAKNESSES] = new(SwotCategoryAnalysisStatus.RUNNING),
|
||||
});
|
||||
Dictionary<SwotAnalysisCategory, SwotCategoryAnalysisProgress> 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.",
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user