mirror of
https://github.com/facebook/docusaurus.git
synced 2025-12-27 20:02:50 +00:00
96 lines
2.4 KiB
TypeScript
96 lines
2.4 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 {validateThemeConfig, DEFAULT_CONFIG} from '../validateThemeConfig';
|
|
import type {Joi} from '@docusaurus/utils-validation';
|
|
|
|
function testValidateThemeConfig(themeConfig: {[key: string]: unknown}) {
|
|
function validate(
|
|
schema: Joi.ObjectSchema<{[key: string]: unknown}>,
|
|
cfg: {[key: string]: unknown},
|
|
) {
|
|
const {value, error} = schema.validate(cfg, {
|
|
convert: false,
|
|
});
|
|
if (error) {
|
|
throw error;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
return validateThemeConfig({validate, themeConfig});
|
|
}
|
|
|
|
describe('validateThemeConfig', () => {
|
|
it('undefined config', () => {
|
|
const liveCodeBlock = undefined;
|
|
expect(testValidateThemeConfig({liveCodeBlock})).toEqual({
|
|
liveCodeBlock: {
|
|
...DEFAULT_CONFIG,
|
|
},
|
|
});
|
|
});
|
|
|
|
it('nonexistent config', () => {
|
|
expect(testValidateThemeConfig({})).toEqual({
|
|
liveCodeBlock: {
|
|
...DEFAULT_CONFIG,
|
|
},
|
|
});
|
|
});
|
|
|
|
it('empty config', () => {
|
|
const liveCodeBlock = {};
|
|
expect(testValidateThemeConfig({liveCodeBlock})).toEqual({
|
|
liveCodeBlock: {
|
|
...DEFAULT_CONFIG,
|
|
},
|
|
});
|
|
});
|
|
|
|
it('playgroundPosition top', () => {
|
|
const liveCodeBlock = {
|
|
playgroundPosition: 'top',
|
|
};
|
|
expect(testValidateThemeConfig({liveCodeBlock})).toEqual({
|
|
liveCodeBlock: {
|
|
...DEFAULT_CONFIG,
|
|
...liveCodeBlock,
|
|
},
|
|
});
|
|
});
|
|
|
|
it('playgroundPosition bottom', () => {
|
|
const liveCodeBlock = {
|
|
playgroundPosition: 'bottom',
|
|
};
|
|
expect(testValidateThemeConfig({liveCodeBlock})).toEqual({
|
|
liveCodeBlock: {
|
|
...DEFAULT_CONFIG,
|
|
...liveCodeBlock,
|
|
},
|
|
});
|
|
});
|
|
|
|
it('playgroundPosition invalid string', () => {
|
|
const liveCodeBlock = {playgroundPosition: 'invalid'};
|
|
expect(() =>
|
|
testValidateThemeConfig({liveCodeBlock}),
|
|
).toThrowErrorMatchingInlineSnapshot(
|
|
`""liveCodeBlock.playgroundPosition" must be one of [top, bottom]"`,
|
|
);
|
|
});
|
|
it('playgroundPosition invalid boolean', () => {
|
|
const liveCodeBlock = {playgroundPosition: true};
|
|
expect(() =>
|
|
testValidateThemeConfig({liveCodeBlock}),
|
|
).toThrowErrorMatchingInlineSnapshot(
|
|
`""liveCodeBlock.playgroundPosition" must be one of [top, bottom]"`,
|
|
);
|
|
});
|
|
});
|