mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-18 03:26:57 +02:00
fix(v2): fix theme validation for prism field and add tests (#3210)
* fix(v2): fix theme validation for prism field * chore(v2): minor changes * chore(v2): remove unused dependencies
This commit is contained in:
parent
0d7314a6f7
commit
8f0c00f3d4
4 changed files with 131 additions and 63 deletions
|
@ -27,60 +27,139 @@ function testValidateThemeConfig(themeConfig) {
|
|||
return validateThemeConfig({themeConfig, validate});
|
||||
}
|
||||
|
||||
describe('color mode config', () => {
|
||||
test('minimal config', () => {
|
||||
const colorMode = {
|
||||
switchConfig: {
|
||||
darkIcon: '🌙',
|
||||
describe('themeConfig', () => {
|
||||
test('should accept valid theme config', () => {
|
||||
const userConfig = {
|
||||
prism: {
|
||||
theme: require('prism-react-renderer/themes/github'),
|
||||
darkTheme: require('prism-react-renderer/themes/dracula'),
|
||||
defaultLanguage: 'javascript',
|
||||
additionalLanguages: ['kotlin', 'java'],
|
||||
},
|
||||
announcementBar: {
|
||||
id: 'supportus',
|
||||
content: 'pls support',
|
||||
backgroundColor: '#fff',
|
||||
textColor: '#000',
|
||||
},
|
||||
image: 'img/docusaurus-soc.png',
|
||||
navbar: {
|
||||
hideOnScroll: true,
|
||||
title: 'Docusaurus',
|
||||
logo: {
|
||||
alt: 'Docusaurus Logo',
|
||||
src: 'img/docusaurus.svg',
|
||||
srcDark: 'img/docusaurus_keytar.svg',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'docsVersionDropdown',
|
||||
position: 'left',
|
||||
nextVersionLabel: '2.0.0-next',
|
||||
},
|
||||
{
|
||||
to: 'docs/next/support',
|
||||
label: 'Community',
|
||||
position: 'left',
|
||||
activeBaseRegex: `docs/next/(support|team|resources)`,
|
||||
'aria-label': 'Community',
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
links: [
|
||||
{
|
||||
title: 'Learn',
|
||||
items: [
|
||||
{
|
||||
label: 'Introduction',
|
||||
to: 'docs',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
logo: {
|
||||
alt: 'Facebook Open Source Logo',
|
||||
src: 'img/oss_logo.png',
|
||||
href: 'https://opensource.facebook.com',
|
||||
},
|
||||
copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc. Built with Docusaurus.`,
|
||||
},
|
||||
};
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
expect(testValidateThemeConfig(userConfig)).toEqual({
|
||||
colorMode: DEFAULT_COLOR_MODE_CONFIG,
|
||||
...userConfig,
|
||||
});
|
||||
});
|
||||
|
||||
test('max config', () => {
|
||||
const colorMode = {
|
||||
defaultMode: 'dark',
|
||||
disableSwitch: false,
|
||||
respectPrefersColorScheme: true,
|
||||
switchConfig: {
|
||||
darkIcon: '🌙',
|
||||
darkIconStyle: {
|
||||
marginTop: '1px',
|
||||
marginLeft: '2px',
|
||||
},
|
||||
lightIcon: '☀️',
|
||||
lightIconStyle: {
|
||||
marginLeft: '1px',
|
||||
},
|
||||
test('should accept valid prism config', () => {
|
||||
const prismConfig = {
|
||||
prism: {
|
||||
additionalLanguages: ['kotlin', 'java'],
|
||||
},
|
||||
};
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
expect(testValidateThemeConfig(prismConfig)).toEqual({
|
||||
colorMode: DEFAULT_COLOR_MODE_CONFIG,
|
||||
...prismConfig,
|
||||
});
|
||||
});
|
||||
|
||||
test('undefined config', () => {
|
||||
const colorMode = undefined;
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
describe('color mode config', () => {
|
||||
test('minimal config', () => {
|
||||
const colorMode = {
|
||||
switchConfig: {
|
||||
darkIcon: '🌙',
|
||||
},
|
||||
};
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('empty config', () => {
|
||||
const colorMode = {};
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
test('max config', () => {
|
||||
const colorMode = {
|
||||
defaultMode: 'dark',
|
||||
disableSwitch: false,
|
||||
respectPrefersColorScheme: true,
|
||||
switchConfig: {
|
||||
darkIcon: '🌙',
|
||||
darkIconStyle: {
|
||||
marginTop: '1px',
|
||||
marginLeft: '2px',
|
||||
},
|
||||
lightIcon: '☀️',
|
||||
lightIconStyle: {
|
||||
marginLeft: '1px',
|
||||
},
|
||||
},
|
||||
};
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('empty switch config', () => {
|
||||
const colorMode = {
|
||||
switchConfig: {},
|
||||
};
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
test('undefined config', () => {
|
||||
const colorMode = undefined;
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
});
|
||||
});
|
||||
|
||||
test('empty config', () => {
|
||||
const colorMode = {};
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
});
|
||||
});
|
||||
|
||||
test('empty switch config', () => {
|
||||
const colorMode = {
|
||||
switchConfig: {},
|
||||
};
|
||||
expect(testValidateThemeConfig({colorMode})).toEqual({
|
||||
colorMode: mergeDefault(colorMode),
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue