mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-05 21:27:24 +02:00
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
import {normalizePluginOptions} from '@docusaurus/utils-validation';
|
|
import {validateOptions, DEFAULT_OPTIONS} from '../options';
|
|
import type {Options} from '@docusaurus/plugin-content-pages';
|
|
|
|
function testValidate(options: Options) {
|
|
return validateOptions({validate: normalizePluginOptions, options});
|
|
}
|
|
|
|
const defaultOptions = {
|
|
...DEFAULT_OPTIONS,
|
|
id: 'default',
|
|
};
|
|
|
|
describe('normalizePagesPluginOptions', () => {
|
|
it('returns default options for undefined user options', () => {
|
|
expect(testValidate({})).toEqual(defaultOptions);
|
|
});
|
|
|
|
it('fills in default options for partially defined user options', () => {
|
|
expect(testValidate({path: 'src/foo'})).toEqual({
|
|
...defaultOptions,
|
|
path: 'src/foo',
|
|
});
|
|
});
|
|
|
|
it('accepts correctly defined user options', () => {
|
|
const userOptions = {
|
|
path: 'src/my-pages',
|
|
routeBasePath: 'my-pages',
|
|
include: ['**/*.{js,jsx,ts,tsx}'],
|
|
exclude: ['**/$*/'],
|
|
};
|
|
expect(testValidate(userOptions)).toEqual({
|
|
...defaultOptions,
|
|
...userOptions,
|
|
});
|
|
});
|
|
|
|
it('rejects bad path inputs', () => {
|
|
expect(() => {
|
|
testValidate({
|
|
// @ts-expect-error: bad attribute
|
|
path: 42,
|
|
});
|
|
}).toThrowErrorMatchingInlineSnapshot(`""path" must be a string"`);
|
|
});
|
|
});
|