mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-05 05:51:21 +08:00
126 lines
3.6 KiB
TypeScript
126 lines
3.6 KiB
TypeScript
/* eslint-disable no-underscore-dangle */
|
|
import path from 'path';
|
|
import { JsPackageManager } from '../../js-package-manager';
|
|
import { angular12 } from './angular12';
|
|
|
|
// eslint-disable-next-line global-require, jest/no-mocks-import
|
|
jest.mock('fs-extra', () => require('../../../../../__mocks__/fs-extra'));
|
|
|
|
const checkAngular12 = async ({ packageJson, main }) => {
|
|
// eslint-disable-next-line global-require
|
|
require('fs-extra').__setMockFiles({
|
|
[path.join('.storybook', 'main.js')]: `module.exports = ${JSON.stringify(main)};`,
|
|
});
|
|
const packageManager = {
|
|
retrievePackageJson: () => ({ dependencies: {}, devDependencies: {}, ...packageJson }),
|
|
} as JsPackageManager;
|
|
return angular12.check({ packageManager });
|
|
};
|
|
|
|
describe('angular12 fix', () => {
|
|
describe('sb < 6.3', () => {
|
|
describe('angular12 dependency', () => {
|
|
const packageJson = {
|
|
dependencies: { '@storybook/react': '^6.2.0', '@angular/core': '^12.0.0' },
|
|
};
|
|
it('should fail', async () => {
|
|
await expect(
|
|
checkAngular12({
|
|
packageJson,
|
|
main: {},
|
|
})
|
|
).rejects.toThrow();
|
|
});
|
|
});
|
|
describe('no angular dependency', () => {
|
|
const packageJson = { dependencies: { '@storybook/react': '^6.2.0' } };
|
|
it('should no-op', async () => {
|
|
await expect(
|
|
checkAngular12({
|
|
packageJson,
|
|
main: {},
|
|
})
|
|
).resolves.toBeFalsy();
|
|
});
|
|
});
|
|
});
|
|
describe('sb 6.3 - 7.0', () => {
|
|
describe('angular12 dependency', () => {
|
|
const packageJson = {
|
|
dependencies: { '@storybook/react': '^6.3.0', '@angular/core': '^12.0.0' },
|
|
};
|
|
describe('webpack5 builder', () => {
|
|
it('should no-op', async () => {
|
|
await expect(
|
|
checkAngular12({
|
|
packageJson,
|
|
main: { core: { builder: 'webpack5' } },
|
|
})
|
|
).resolves.toBeFalsy();
|
|
});
|
|
});
|
|
describe('custom builder', () => {
|
|
it('should no-op', async () => {
|
|
await expect(
|
|
checkAngular12({
|
|
packageJson,
|
|
main: { core: { builder: 'storybook-builder-vite' } },
|
|
})
|
|
).resolves.toBeFalsy();
|
|
});
|
|
});
|
|
describe('webpack4 builder', () => {
|
|
it('should add webpack5 builder', async () => {
|
|
await expect(
|
|
checkAngular12({
|
|
packageJson,
|
|
main: { core: { builder: 'webpack4' } },
|
|
})
|
|
).resolves.toMatchObject({
|
|
angularVersion: '^12.0.0',
|
|
storybookVersion: '^6.3.0',
|
|
});
|
|
});
|
|
});
|
|
describe('no builder', () => {
|
|
it('should add webpack5 builder', async () => {
|
|
await expect(
|
|
checkAngular12({
|
|
packageJson,
|
|
main: {},
|
|
})
|
|
).resolves.toMatchObject({
|
|
angularVersion: '^12.0.0',
|
|
storybookVersion: '^6.3.0',
|
|
});
|
|
});
|
|
});
|
|
});
|
|
describe('no angular dependency', () => {
|
|
it('should no-op', async () => {
|
|
await expect(
|
|
checkAngular12({
|
|
packageJson: {},
|
|
main: {},
|
|
})
|
|
).resolves.toBeFalsy();
|
|
});
|
|
});
|
|
});
|
|
describe('sb 7.0+', () => {
|
|
describe('angular12 dependency', () => {
|
|
const packageJson = {
|
|
dependencies: { '@storybook/react': '^7.0.0-alpha.0', '@angular/core': '^12.0.0' },
|
|
};
|
|
it('should no-op', async () => {
|
|
await expect(
|
|
checkAngular12({
|
|
packageJson,
|
|
main: {},
|
|
})
|
|
).resolves.toBeFalsy();
|
|
});
|
|
});
|
|
});
|
|
});
|