Forge
csharpdeeb25a2
1using System.Text.Json;
2using CascadeIDE.Features.Workspace;
3using CascadeIDE.Features.WorkspaceNavigation.Application;
4using Xunit;
5
6namespace CascadeIDE.Tests;
7
8public sealed class WorkspaceCorrespondenceContextBuilderTests
9{
10 [Fact]
11 public void BuildJson_includes_forward_docs_and_layers()
12 {
13 var root = Path.Combine(Path.GetTempPath(), "crs-ctx-" + Guid.NewGuid().ToString("N"));
14 Directory.CreateDirectory(root);
15 try
16 {
17 var cs = Path.Combine(root, "Features", "Nav", "Bar.cs");
18 Directory.CreateDirectory(Path.GetDirectoryName(cs)!);
19 File.WriteAllText(cs, "//");
20
21 var tomlPath = Path.Combine(root, ".cascade");
22 Directory.CreateDirectory(tomlPath);
23 File.WriteAllText(
24 Path.Combine(tomlPath, "workspace.toml"),
25 """
26 [workspace.adr.map]
27 "Features/Nav/" = ["docs/adr/0001-test.md"]
28
29 [[workspace.features.feature]]
30 id = "nav"
31 title = "Nav"
32 paths = ["Features/Nav/"]
33 docs = ["docs/adr/0001-test.md"]
34 """);
35
36 var adr = Path.Combine(root, "docs", "adr", "0001-test.md");
37 Directory.CreateDirectory(Path.GetDirectoryName(adr)!);
38 File.WriteAllText(adr, "# Test");
39
40 var json = WorkspaceCorrespondenceContextBuilder.BuildJson(root, cs);
41 using var doc = JsonDocument.Parse(json);
42 var rootEl = doc.RootElement;
43 Assert.Equal("Features/Nav/Bar.cs", rootEl.GetProperty("file").GetString()?.Replace('\\', '/'));
44 Assert.Contains("L1", rootEl.GetProperty("activeLayers").EnumerateArray().Select(e => e.GetString()));
45 Assert.True(rootEl.GetProperty("forwardDocs").GetArrayLength() >= 1);
46 }
47 finally
48 {
49 if (Directory.Exists(root))
50 Directory.Delete(root, recursive: true);
51 }
52 }
53}
54
View only · write via MCP/CIDE