fix tests

This commit is contained in:
Norbert de Langen 2021-02-08 19:11:12 +01:00
parent 64620df276
commit 09ba680d0d
No known key found for this signature in database
GPG Key ID: 976651DA156C2825
2 changed files with 82 additions and 81 deletions

View File

@ -1,80 +1,82 @@
import ReactDocgenTypescriptPlugin from 'react-docgen-typescript-plugin';
import * as preset from './framework-preset-react-docgen';
import type { StorybookOptions } from './types';
// TODO: fix after change to use presets.apply to get the typescriptOptions
describe('framework-preset-react-docgen', () => {
const babelPluginReactDocgenPath = require.resolve('babel-plugin-react-docgen');
// import ReactDocgenTypescriptPlugin from 'react-docgen-typescript-plugin';
// import type { Options } from '@storybook/core-common';
// import * as preset from './framework-preset-react-docgen';
it('should return the babel config with the extra plugin', () => {
const babelConfig = {
babelrc: false,
presets: ['env', 'foo-preset'],
plugins: ['foo-plugin'],
};
// describe('framework-preset-react-docgen', () => {
// const babelPluginReactDocgenPath = require.resolve('babel-plugin-react-docgen');
const config = preset.babel(babelConfig, {
typescriptOptions: { check: false, reactDocgen: 'react-docgen' },
} as StorybookOptions);
// it('should return the babel config with the extra plugin', () => {
// const babelConfig = {
// babelrc: false,
// presets: ['env', 'foo-preset'],
// plugins: ['foo-plugin'],
// };
expect(config).toEqual({
babelrc: false,
plugins: ['foo-plugin'],
presets: ['env', 'foo-preset'],
overrides: [
{
test: /\.(mjs|tsx?|jsx?)$/,
plugins: [
[
babelPluginReactDocgenPath,
{
DOC_GEN_COLLECTION_NAME: 'STORYBOOK_REACT_CLASSES',
},
],
],
},
],
});
});
// const config = preset.babel(babelConfig, {
// typescriptOptions: { check: false, reactDocgen: 'react-docgen' },
// } as Options);
it('should return the webpack config with the extra plugin', () => {
const webpackConfig = {
plugins: [],
};
// expect(config).toEqual({
// babelrc: false,
// plugins: ['foo-plugin'],
// presets: ['env', 'foo-preset'],
// overrides: [
// {
// test: /\.(mjs|tsx?|jsx?)$/,
// plugins: [
// [
// babelPluginReactDocgenPath,
// {
// DOC_GEN_COLLECTION_NAME: 'STORYBOOK_REACT_CLASSES',
// },
// ],
// ],
// },
// ],
// });
// });
const config = preset.webpackFinal(webpackConfig, {
typescriptOptions: { check: false, reactDocgen: 'react-docgen-typescript' },
});
// it('should return the webpack config with the extra plugin', () => {
// const webpackConfig = {
// plugins: [],
// };
expect(config).toEqual({
plugins: [expect.any(ReactDocgenTypescriptPlugin)],
});
});
// const config = preset.webpackFinal(webpackConfig, {
// typescriptOptions: { check: false, reactDocgen: 'react-docgen-typescript' },
// });
it('should not add any extra plugins', () => {
const babelConfig = {
babelrc: false,
presets: ['env', 'foo-preset'],
plugins: ['foo-plugin'],
};
// expect(config).toEqual({
// plugins: [expect.any(ReactDocgenTypescriptPlugin)],
// });
// });
const webpackConfig = {
plugins: [],
};
// it('should not add any extra plugins', () => {
// const babelConfig = {
// babelrc: false,
// presets: ['env', 'foo-preset'],
// plugins: ['foo-plugin'],
// };
const outputBabelconfig = preset.babel(babelConfig, {
typescriptOptions: { check: false, reactDocgen: false },
});
const outputWebpackconfig = preset.webpackFinal(webpackConfig, {
typescriptOptions: { check: false, reactDocgen: false },
});
// const webpackConfig = {
// plugins: [],
// };
expect(outputBabelconfig).toEqual({
babelrc: false,
presets: ['env', 'foo-preset'],
plugins: ['foo-plugin'],
});
expect(outputWebpackconfig).toEqual({
plugins: [],
});
});
});
// const outputBabelconfig = preset.babel(babelConfig, {
// typescriptOptions: { check: false, reactDocgen: false },
// });
// const outputWebpackconfig = preset.webpackFinal(webpackConfig, {
// typescriptOptions: { check: false, reactDocgen: false },
// });
// expect(outputBabelconfig).toEqual({
// babelrc: false,
// presets: ['env', 'foo-preset'],
// plugins: ['foo-plugin'],
// });
// expect(outputWebpackconfig).toEqual({
// plugins: [],
// });
// });
// });

View File

@ -1,7 +1,7 @@
import webpack from 'webpack';
import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin';
import type { Options } from '@storybook/core-common';
import * as preset from './framework-preset-react';
import type { StorybookOptions } from './types';
const mockApply = jest.fn();
jest.mock('@pmmmwh/react-refresh-webpack-plugin', () => {
@ -20,9 +20,10 @@ describe('framework-preset-react', () => {
};
const babelConfigMock = {};
const storybookOptions: Partial<StorybookOptions> = {
const storybookOptions: Partial<Options> = {
configType: 'DEVELOPMENT',
presets: {
// @ts-ignore
apply: async () => ({
fastRefresh: true,
}),
@ -30,9 +31,10 @@ describe('framework-preset-react', () => {
presetsList: [],
};
const storybookOptionsDisabledRefresh: Partial<StorybookOptions> = {
const storybookOptionsDisabledRefresh: Partial<Options> = {
configType: 'DEVELOPMENT',
presets: {
// @ts-ignore
apply: async () => ({
fastRefresh: false,
}),
@ -41,7 +43,7 @@ describe('framework-preset-react', () => {
describe('babel', () => {
it('should return a config with fast refresh plugin when fast refresh is enabled', async () => {
const config = await preset.babel(babelConfigMock, storybookOptions as StorybookOptions);
const config = await preset.babel(babelConfigMock, storybookOptions as Options);
expect(config.plugins).toEqual([[reactRefreshPath, {}, 'storybook-react-refresh']]);
});
@ -49,7 +51,7 @@ describe('framework-preset-react', () => {
it('should return unchanged config without fast refresh plugin when fast refresh is disabled', async () => {
const config = await preset.babel(
babelConfigMock,
storybookOptionsDisabledRefresh as StorybookOptions
storybookOptionsDisabledRefresh as Options
);
expect(config).toEqual(babelConfigMock);
@ -59,7 +61,7 @@ describe('framework-preset-react', () => {
const config = await preset.babel(babelConfigMock, {
...storybookOptions,
configType: 'PRODUCTION',
} as StorybookOptions);
} as Options);
expect(config).toEqual(babelConfigMock);
});
@ -67,10 +69,7 @@ describe('framework-preset-react', () => {
describe('webpackFinal', () => {
it('should return a config with fast refresh plugin when fast refresh is enabled', async () => {
const config = await preset.webpackFinal(
webpackConfigMock,
storybookOptions as StorybookOptions
);
const config = await preset.webpackFinal(webpackConfigMock, storybookOptions as Options);
expect(config.plugins).toEqual([new ReactRefreshWebpackPlugin()]);
});
@ -78,7 +77,7 @@ describe('framework-preset-react', () => {
it('should return unchanged config without fast refresh plugin when fast refresh is disabled', async () => {
const config = await preset.webpackFinal(
webpackConfigMock,
storybookOptionsDisabledRefresh as StorybookOptions
storybookOptionsDisabledRefresh as Options
);
expect(config).toEqual(webpackConfigMock);
@ -88,7 +87,7 @@ describe('framework-preset-react', () => {
const config = await preset.webpackFinal(webpackConfigMock, {
...storybookOptions,
configType: 'PRODUCTION',
} as StorybookOptions);
} as Options);
expect(config).toEqual(webpackConfigMock);
});