Skip to content

Commit 02e77c3

Browse files
authored
Reorder after reinjecting tree into global navigation (#839)
* Reorder after reinjecting tree into global navigation * remove unnecessary order by on top level items
1 parent 7ff5018 commit 02e77c3

File tree

2 files changed

+62
-49
lines changed

2 files changed

+62
-49
lines changed

Diff for: src/docs-assembler/Navigation/GlobalNavigation.cs

+1-6
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,10 @@ private IReadOnlyCollection<INavigationItem> BuildNavigation(IReadOnlyCollection
106106
cleanNavigationItems.Add(allNavigationItem);
107107
}
108108

109-
tree.NavigationItems = cleanNavigationItems.ToArray();
109+
tree.NavigationItems = cleanNavigationItems.OrderBy(n => n.Order).ToArray();
110110
var navigationItem = new TocNavigationItem(i, depth, tree, toc.Source);
111111

112112
list.Add(navigationItem);
113-
if (toc.Source == new Uri("docs-content://reference/"))
114-
{
115-
}
116-
117-
//list.AddRange(tocNavigationItems);
118113
i++;
119114
}
120115

Diff for: tests/docs-assembler.Tests/src/docs-assembler.Tests/GlobalNavigationTests.cs

+61-43
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,70 @@
1313

1414
namespace Documentation.Assembler.Tests;
1515

16-
#pragma warning disable xUnit1004
17-
1816
public class GlobalNavigationPathProviderTests
1917
{
18+
private DiagnosticsCollector Collector { get; }
19+
private AssembleContext Context { get; }
20+
private FileSystem FileSystem { get; }
21+
private IDirectoryInfo CheckoutDirectory { get; set; }
22+
23+
private bool HasCheckouts() => CheckoutDirectory.Exists;
24+
25+
public GlobalNavigationPathProviderTests()
26+
{
27+
FileSystem = new FileSystem();
28+
CheckoutDirectory = FileSystem.DirectoryInfo.New(
29+
FileSystem.Path.Combine(Paths.GetSolutionDirectory()!.FullName, ".artifacts", "checkouts")
30+
);
31+
Collector = new DiagnosticsCollector([]);
32+
Context = new AssembleContext("dev", Collector, FileSystem, FileSystem, CheckoutDirectory.FullName, null);
33+
}
34+
35+
private Checkout CreateCheckout(IFileSystem fs, string name) =>
36+
new()
37+
{
38+
Repository = new Repository
39+
{
40+
Name = name,
41+
Origin = $"elastic/{name}"
42+
},
43+
HeadReference = Guid.NewGuid().ToString(),
44+
Directory = fs.DirectoryInfo.New(fs.Path.Combine(Path.Combine(CheckoutDirectory.FullName, name)))
45+
};
46+
47+
private async Task<AssembleSources> Setup()
48+
{
49+
_ = Collector.StartAsync(TestContext.Current.CancellationToken);
50+
51+
string[] nar = [NarrativeRepository.RepositoryName];
52+
var repos = nar.Concat(Context.Configuration.ReferenceRepositories
53+
.Where(kv => !kv.Value.Skip)
54+
.Select(kv => kv.Value.Name)
55+
)
56+
.ToArray();
57+
var checkouts = repos.Select(r => CreateCheckout(FileSystem, r)).ToArray();
58+
59+
var assembleSources = await AssembleSources.AssembleAsync(Context, checkouts, TestContext.Current.CancellationToken);
60+
return assembleSources;
61+
}
2062

21-
[Fact(Skip = "Requires local checkout folder")]
63+
[Fact]
2264
public async Task ParsesReferences()
2365
{
66+
Assert.SkipUnless(HasCheckouts(), $"Requires local checkout folder: {CheckoutDirectory.FullName}");
67+
2468
var expectedRoot = new Uri("docs-content://reference/");
25-
var expectedParent = new Uri("docs-content://reference/ingestion-tools/apm/agents/");
69+
var expectedParent = new Uri("docs-content://reference/apm-agents/");
2670
var sut = new Uri("apm-agent-dotnet://reference/");
2771
var clients = new Uri("docs-content://reference/elasticsearch-clients/");
28-
var fs = new FileSystem();
29-
var (assembleContext, assembleSources) = await Setup(fs);
72+
var assembleSources = await Setup();
3073

3174
assembleSources.TocTopLevelMappings.Should().NotBeEmpty().And.ContainKey(sut);
3275
assembleSources.TocTopLevelMappings[sut].TopLevelSource.Should().Be(expectedRoot);
3376
assembleSources.TocTopLevelMappings.Should().NotBeEmpty().And.ContainKey(expectedRoot);
3477
assembleSources.TocTopLevelMappings[sut].ParentSource.Should().Be(expectedParent);
3578

36-
var navigationFile = new GlobalNavigationFile(assembleContext, assembleSources);
79+
var navigationFile = new GlobalNavigationFile(Context, assembleSources);
3780
var referenceToc = navigationFile.TableOfContents.FirstOrDefault(t => t.Source == expectedRoot);
3881
referenceToc.Should().NotBeNull();
3982
referenceToc!.TocReferences.Should().NotContainKey(clients);
@@ -54,6 +97,9 @@ public async Task ParsesReferences()
5497
var referenceNav = navigation.NavigationLookup[expectedRoot];
5598
navigation.NavigationItems.Should().HaveSameCount(navigation.NavigationLookup);
5699

100+
var referenceOrder = referenceNav.Group.NavigationItems.OfType<TocNavigationItem>()
101+
.Last().Source.Should().Be(new Uri("docs-content://reference/glossary/"));
102+
57103
referenceNav.Should().NotBeNull();
58104
referenceNav.NavigationLookup.Should().NotContainKey(clients);
59105
referenceNav.Group.NavigationItems.OfType<TocNavigationItem>()
@@ -84,14 +130,15 @@ public async Task ParsesReferences()
84130

85131

86132

87-
[Fact(Skip = "Requires local checkout folder")]
133+
[Fact]
88134
public async Task ParsesGlobalNavigation()
89135
{
136+
Assert.SkipUnless(HasCheckouts(), $"Requires local checkout folder: {CheckoutDirectory.FullName}");
137+
90138
var expectedRoot = new Uri("docs-content://extend");
91139
var kibanaExtendMoniker = new Uri("kibana://extend/");
92-
var fs = new FileSystem();
93140

94-
var (assembleContext, assembleSources) = await Setup(fs);
141+
var assembleSources = await Setup();
95142
assembleSources.TocTopLevelMappings.Should().NotBeEmpty().And.ContainKey(kibanaExtendMoniker);
96143
assembleSources.TocTopLevelMappings[kibanaExtendMoniker].TopLevelSource.Should().Be(expectedRoot);
97144
assembleSources.TocTopLevelMappings.Should().NotBeEmpty().And.ContainKey(new Uri("docs-content://reference/apm/"));
@@ -112,7 +159,7 @@ public async Task ParsesGlobalNavigation()
112159
kibanaConfigMapping.TableOfContentsConfiguration.Should().NotBeNull();
113160
assembleSources.TocConfigurationMapping[kibanaExtendMoniker].Should().NotBeNull();
114161

115-
var navigationFile = new GlobalNavigationFile(assembleContext, assembleSources);
162+
var navigationFile = new GlobalNavigationFile(Context, assembleSources);
116163
navigationFile.TableOfContents.Should().NotBeNull().And.NotBeEmpty();
117164
navigationFile.TableOfContents.Count.Should().BeLessThan(20);
118165

@@ -122,40 +169,11 @@ public async Task ParsesGlobalNavigation()
122169
resolved.Should().NotBeNull();
123170
}
124171

125-
private static async Task<(AssembleContext assembleContext, AssembleSources assembleSources)> Setup(FileSystem fs)
126-
{
127-
await using var collector = new DiagnosticsCollector([]);
128-
_ = collector.StartAsync(TestContext.Current.CancellationToken);
129-
130-
var assembleContext = new AssembleContext("dev", collector, fs, fs, null, null);
131-
132-
string[] nar = [NarrativeRepository.RepositoryName];
133-
var repos = nar.Concat(assembleContext.Configuration.ReferenceRepositories
134-
.Where(kv => !kv.Value.Skip)
135-
.Select(kv => kv.Value.Name)
136-
)
137-
.ToArray();
138-
var checkouts = repos.Select(r => CreateCheckout(fs, r)).ToArray();
139-
140-
var assembleSources = await AssembleSources.AssembleAsync(assembleContext, checkouts, TestContext.Current.CancellationToken);
141-
return (assembleContext, assembleSources);
142-
}
143-
144-
private static Checkout CreateCheckout(IFileSystem fs, string name) =>
145-
new()
146-
{
147-
Repository = new Repository
148-
{
149-
Name = name,
150-
Origin = $"elastic/{name}"
151-
},
152-
HeadReference = Guid.NewGuid().ToString(),
153-
Directory = fs.DirectoryInfo.New(fs.Path.Combine(Paths.GetSolutionDirectory()!.FullName, ".artifacts", "checkouts", name))
154-
};
155-
156-
[Fact(Skip = "Requires local checkout folder")]
172+
[Fact]
157173
public async Task UriResolving()
158174
{
175+
Assert.SkipUnless(HasCheckouts(), $"Requires local checkout folder: {CheckoutDirectory.FullName}");
176+
159177
await using var collector = new DiagnosticsCollector([]);
160178
_ = collector.StartAsync(TestContext.Current.CancellationToken);
161179

0 commit comments

Comments
 (0)