Forge
csharpdeeb25a2
1using CascadeIDE.Features.Chat;
2using CascadeIDE.Services;
3using Xunit;
4
5namespace CascadeIDE.Tests;
6
7public sealed class ChatThreadPresentationTests
8{
9 private static readonly Guid MainId = Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa");
10 private static readonly Guid BranchId = Guid.Parse("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb");
11
12 [Fact]
13 public void BuildPickerRows_List_OrdersByOrder()
14 {
15 var main = new ChatThreadNode(MainId, "t-main", "Main", true, true, null, null, 0, 0);
16 var branch = new ChatThreadNode(BranchId, "t-branch", "Branch", false, false, MainId, null, 1, 1);
17 var counts = new Dictionary<Guid, int> { [MainId] = 2, [BranchId] = 1 };
18
19 var rows = ChatThreadPresentation.BuildPickerRows(
20 TopicPickerPresentation.List,
21 [main, branch],
22 counts);
23
24 Assert.Equal(2, rows.Count);
25 Assert.Equal("Main", rows[0].Title);
26 Assert.Equal("Branch", rows[1].Title);
27 }
28
29 [Fact]
30 public void RankThreadsForCompletion_PrefixMatchesIdFirst()
31 {
32 var main = new ChatThreadNode(MainId, "t-main", "Alpha", true, true, null, null, 0, 0);
33 var branch = new ChatThreadNode(BranchId, "t-branch", "Beta", false, false, null, null, 1, 1);
34 var ranked = ChatThreadPresentation.RankThreadsForCompletion([main, branch], "bbbbbbbb").ToList();
35 Assert.Single(ranked);
36 Assert.Equal(BranchId, ranked[0].ThreadId);
37 }
38
39 [Fact]
40 public void MessageCountsByThread_UsesStateMessages()
41 {
42 var main = new ChatThreadNode(MainId, "t-main", "Main", true, true, null, null, 0, 0);
43 var branch = new ChatThreadNode(BranchId, "t-branch", "Branch", false, false, MainId, null, 1, 1);
44 var msgMain = new ChatMessageNode(
45 Guid.NewGuid(), "m1", MainId, null, 0, "user", "hi", false, false, null, null, null);
46 var msgBranch = new ChatMessageNode(
47 Guid.NewGuid(), "m2", BranchId, null, 1, "user", "x", false, false, null, null, null);
48 var state = new ChatSurfaceState([main, branch], [msgMain, msgBranch], [], [], MainId, "Chat");
49 var layout = new ChatSurfaceLayout([], []);
50 var snapshot = new ChatSurfaceSnapshot(state, layout, ChatProductSpine.Empty);
51
52 var counts = ChatThreadPresentation.MessageCountsByThread(snapshot);
53 Assert.Equal(1, counts[MainId]);
54 Assert.Equal(1, counts[BranchId]);
55 }
56}
57
View only · write via MCP/CIDE