Forge
csharp3407750f
1using AgentForge.Plugin.View.Components.Layout;
2
3namespace AgentForge.Tests;
4
5public sealed class ForgeViewGroupedListTests
6{
7 [Fact]
8 public void Render_hides_empty_sections_and_orders_by_axis()
9 {
10 var html = ForgeViewGroupedList.Render(
11 ["alpha", "beta", "gamma"],
12 static item => item switch
13 {
14 "alpha" => "public",
15 "beta" => "private",
16 _ => "public",
17 },
18 [new("public", "Public"), new("private", "Private")],
19 static item => $"<li>{item}</li>");
20
21 var publicIndex = html.IndexOf("<strong>Public</strong>", StringComparison.Ordinal);
22 var privateIndex = html.IndexOf("<strong>Private</strong>", StringComparison.Ordinal);
23
24 Assert.True(publicIndex >= 0);
25 Assert.True(privateIndex > publicIndex);
26 Assert.Contains("2 repos", html);
27 Assert.Contains("1 repos", html);
28 Assert.Contains("alpha", html);
29 Assert.Contains("beta", html);
30 Assert.Contains("gamma", html);
31 }
32
33 [Fact]
34 public void RenderNested_nests_sections_by_axis_order()
35 {
36 var html = ForgeViewGroupedList.RenderNested(
37 ["a", "b", "c"],
38 [
39 (static item => item switch
40 {
41 "a" => "public",
42 "b" => "private",
43 _ => "public",
44 }, [new("public", "Public"), new("private", "Private")]),
45 (static item => item switch
46 {
47 "a" => "agent",
48 "b" => "human",
49 _ => "agent",
50 }, [new("agent", "Agent"), new("human", "Human")]),
51 ],
52 static item => $"<li>{item}</li>");
53
54 var publicIndex = html.IndexOf("<strong>Public</strong>", StringComparison.Ordinal);
55 var privateIndex = html.IndexOf("<strong>Private</strong>", StringComparison.Ordinal);
56 var agentIndex = html.IndexOf("<strong>Agent</strong>", StringComparison.Ordinal);
57 var humanIndex = html.IndexOf("<strong>Human</strong>", StringComparison.Ordinal);
58
59 Assert.True(publicIndex >= 0);
60 Assert.True(privateIndex > publicIndex);
61 Assert.True(agentIndex > publicIndex);
62 Assert.True(humanIndex > privateIndex);
63 Assert.Contains("a", html);
64 Assert.Contains("b", html);
65 Assert.Contains("c", html);
66 }
67}
68
View only · write via MCP/CIDE