fix: [verified] expose all documentation in reachable sidebars
Build and publish Eldorado documentation / build (pull_request) Successful in 47s
Build and publish Eldorado documentation / build (pull_request) Successful in 47s
This commit is contained in:
1 parent
325363d89c
commit
e087adab1e
10 files changed
+255
-8
No files matched your search
@@ -0,0 +1,51 @@
|
||||
import {test} from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import {auditSidebars} from './sidebar-coverage.mjs';
|
||||
|
||||
const fixture = () => [{plugin:'strategy', version:'current', documents:[
|
||||
{id:'overview', path:'/strategy/overview/', sidebar:'main'},
|
||||
{id:'nested/reference', path:'/strategy/reference/', sidebar:'main'},
|
||||
], sidebars:{main:[{type:'category', label:'Stage', href:'/strategy/overview', items:[
|
||||
{type:'category', label:'Reference', items:[{type:'link', docId:'nested/reference', href:'/strategy/reference'}]},
|
||||
]}]}}];
|
||||
const entries = ['strategy:current:main'];
|
||||
test('resolved nested entries and linked category overviews both count', () => {
|
||||
assert.equal(auditSidebars(fixture(), entries).length, 2);
|
||||
});
|
||||
test('missing docs fail even if Docusaurus assigns a displayed sidebar', () => {
|
||||
const data = fixture();
|
||||
data[0].sidebars.main[0].items = [];
|
||||
assert.throws(() => auditSidebars(data, entries), /Missing sidebar document/);
|
||||
});
|
||||
test('new publishable docs and absent category overview links fail closed', () => {
|
||||
const data = fixture();
|
||||
data[0].documents.push({id:'new', path:'/new'});
|
||||
assert.throws(() => auditSidebars(data, entries), /Unreachable sidebar/);
|
||||
const withoutLink = fixture();
|
||||
delete withoutLink[0].sidebars.main[0].href;
|
||||
assert.throws(() => auditSidebars(withoutLink, entries), /Missing sidebar document/);
|
||||
});
|
||||
test('duplicate normalized routes and duplicate sidebar entries fail', () => {
|
||||
const data = fixture();
|
||||
data[0].documents.push({...data[0].documents[0], path:'/strategy/overview'});
|
||||
assert.throws(() => auditSidebars(data, entries), /Duplicate document ID/);
|
||||
data[0].documents.at(-1).id = 'different';
|
||||
assert.throws(() => auditSidebars(data, entries), /Duplicate document route/);
|
||||
const duplicate = fixture();
|
||||
duplicate[0].sidebars.main.push({type:'link', href:'/strategy/overview/'});
|
||||
assert.throws(() => auditSidebars(duplicate, entries), /Duplicate sidebar route/);
|
||||
});
|
||||
test('unlisted entries and unresolved sidebar types fail', () => {
|
||||
const data = fixture();
|
||||
data[0].sidebars.main[0].unlisted = true;
|
||||
assert.throws(() => auditSidebars(data, entries), /Hidden sidebar item/);
|
||||
data[0].sidebars.main[0] = {type:'autogenerated'};
|
||||
assert.throws(() => auditSidebars(data, entries), /Unresolved sidebar type/);
|
||||
});
|
||||
test('disconnected plugin menus fail, cross-plugin sidebar links make them reachable', () => {
|
||||
const data = fixture();
|
||||
data.push({plugin:'default', version:'current', documents:[{id:'help', path:'/docs/help', sidebar:'docs'}], sidebars:{docs:[{type:'link', href:'/docs/help'}]}});
|
||||
assert.throws(() => auditSidebars(data, entries), /Unreachable sidebar/);
|
||||
data[0].sidebars.main.push({type:'link', href:'/docs/help/'});
|
||||
assert.equal(auditSidebars(data, entries).length, 3);
|
||||
});
|
||||
Reference in new issue
Block a user