Forge
csharpdeeb25a2
1using CascadeIDE.Features.Chat;
2using CascadeIDE.Models.AgentChat;
3using Xunit;
4
5namespace CascadeIDE.Tests;
6
7public sealed class SedmTimelineBuilderTests
8{
9 private static readonly Guid Workline = Guid.Parse("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
10
11 [Fact]
12 public void Build_MapsIntentAndDecisionForWorkline()
13 {
14 var sid = Guid.NewGuid();
15 var events = new List<ChatHistoryEvent>
16 {
17 NewEvent(sid, ChatHistoryEventKind.IntentCardRecorded, new SedmIntentCardRecordedPayload(
18 1, "operator", Workline.ToString("N"),
19 new SedmIntentCardBodyPayload("outcome", Trigger: "pain", ChosenApproach: "path A"),
20 Considered: [new SedmIntentConsideredOptionPayload("B", "worse")])),
21 NewEvent(sid, ChatHistoryEventKind.DecisionRecorded, new SedmDecisionRecordedPayload(
22 1, "agent", Workline.ToString("N"),
23 new SedmIntentCardBodyPayload("decided", ChosenApproach: "path A"))),
24 };
25
26 var timeline = SedmTimelineBuilder.Build(events, Workline);
27 Assert.Equal(2, timeline.Count);
28 Assert.Equal("Intent", timeline[0].Title);
29 Assert.Equal(ChatMessageVisualRole.SedmIntent, timeline[0].VisualRole);
30 Assert.Equal("Decision", timeline[1].Title);
31 }
32
33 private static ChatHistoryEvent NewEvent(Guid sessionId, string kind, object payload) =>
34 new(
35 Guid.NewGuid(),
36 sessionId,
37 DateTimeOffset.UtcNow,
38 kind,
39 ChatHistoryJson.Serialize(payload),
40 ThreadId: Workline.ToString("N"));
41}
42
View only · write via MCP/CIDE