feat(content-docs): expose isCategoryIndex matcher to customize conventions (#6451)

Co-authored-by: sebastienlorber <lorber.sebastien@gmail.com>
This commit is contained in:
Joshua Chen 2022-01-27 00:58:52 +08:00 committed by GitHub
parent 76a8d5f38a
commit 24a895fbc5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 408 additions and 93 deletions

View file

@ -12,7 +12,7 @@ import {
readVersionDocs,
readDocFile,
addDocNavigation,
isConventionalDocIndex,
isCategoryIndex,
} from '../docs';
import {loadSidebars} from '../sidebars';
import {readVersionsMetadata} from '../versions';
@ -938,108 +938,124 @@ describe('versioned site', () => {
describe('isConventionalDocIndex', () => {
test('supports readme', () => {
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'readme.md',
isCategoryIndex({
fileName: 'readme',
directories: ['doesNotMatter'],
extension: '.md',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'readme.mdx',
isCategoryIndex({
fileName: 'readme',
directories: ['doesNotMatter'],
extension: '.mdx',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'README.md',
isCategoryIndex({
fileName: 'README',
directories: ['doesNotMatter'],
extension: '.md',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'parent/ReAdMe',
isCategoryIndex({
fileName: 'ReAdMe',
directories: ['doesNotMatter'],
extension: '',
}),
).toEqual(true);
});
test('supports index', () => {
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'index.md',
isCategoryIndex({
fileName: 'index',
directories: ['doesNotMatter'],
extension: '.md',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'index.mdx',
isCategoryIndex({
fileName: 'index',
directories: ['doesNotMatter'],
extension: '.mdx',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'INDEX.md',
isCategoryIndex({
fileName: 'INDEX',
directories: ['doesNotMatter'],
extension: '.md',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'parent/InDeX',
isCategoryIndex({
fileName: 'InDeX',
directories: ['doesNotMatter'],
extension: '',
}),
).toEqual(true);
});
test('supports <categoryName>/<categoryName>.md', () => {
expect(
isConventionalDocIndex({
sourceDirName: 'someCategory',
source: 'someCategory',
isCategoryIndex({
fileName: 'someCategory',
directories: ['someCategory', 'doesNotMatter'],
extension: '',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'someCategory',
source: 'someCategory.md',
isCategoryIndex({
fileName: 'someCategory',
directories: ['someCategory'],
extension: '.md',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'someCategory',
source: 'someCategory.mdx',
isCategoryIndex({
fileName: 'someCategory',
directories: ['someCategory'],
extension: '.mdx',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'some_category',
source: 'SOME_CATEGORY.md',
isCategoryIndex({
fileName: 'SOME_CATEGORY',
directories: ['some_category'],
extension: '.md',
}),
).toEqual(true);
expect(
isConventionalDocIndex({
sourceDirName: 'some_category',
source: 'parent/some_category',
isCategoryIndex({
fileName: 'some_category',
directories: ['some_category'],
extension: '',
}),
).toEqual(true);
});
test('reject other cases', () => {
expect(
isConventionalDocIndex({
sourceDirName: 'someCategory',
source: 'some_Category',
isCategoryIndex({
fileName: 'some_Category',
directories: ['someCategory'],
extension: '',
}),
).toEqual(false);
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'read_me',
isCategoryIndex({
fileName: 'read_me',
directories: ['doesNotMatter'],
extension: '',
}),
).toEqual(false);
expect(
isConventionalDocIndex({
sourceDirName: 'doesNotMatter',
source: 'the index',
isCategoryIndex({
fileName: 'the index',
directories: ['doesNotMatter'],
extension: '',
}),
).toEqual(false);
});