nx/packages/web/src/migrations/update-11-5-2/update-existing-babelrc-files.spec.ts
2021-06-16 21:09:30 +00:00

93 lines
2.6 KiB
TypeScript

import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import { readJson, writeJson, Tree } from '@nrwl/devkit';
import { updateExistingBabelrcFiles } from './update-existing-babelrc-files';
describe('Create missing .babelrc files', () => {
let tree: Tree;
beforeEach(async () => {
tree = createTreeWithEmptyWorkspace();
});
it(`should add web babel preset if it does not exist`, async () => {
writeJson(tree, 'workspace.json', {
projects: {
'missing-babel-presets': {
root: 'apps/missing-babel-presets',
projectType: 'application',
},
'web-app': {
root: 'apps/web-app',
projectType: 'application',
},
'react-app': {
root: 'apps/react-app',
projectType: 'application',
},
'gatsby-app': {
root: 'apps/gatsby-app',
projectType: 'application',
},
'not-using-babel': {
root: 'apps/not-using-babel',
projectType: 'application',
},
'next-app': {
root: 'apps/next-app',
projectType: 'application',
},
},
});
writeJson(tree, 'nx.json', {
projects: {
'missing-babel-presets': {},
'web-app': {},
'react-app': {},
'gatsby-app': {},
'not-using-babel': {},
'next-app': {},
},
});
writeJson(tree, 'babel.config.json', {
presets: ['@nrwl/web/babel'],
});
writeJson(tree, 'apps/missing-babel-presets/.babelrc', {});
writeJson(tree, 'apps/web-app/.babelrc', { presets: ['@nrwl/web/babel'] });
writeJson(tree, 'apps/react-app/.babelrc', {
presets: ['@nrwl/react/babel'],
});
writeJson(tree, 'apps/gatsby-app/.babelrc', {
presets: ['@nrwl/gatsby/babel'],
});
writeJson(tree, 'apps/next-app/.babelrc', {
presets: ['@nrwl/next/babel'],
});
await updateExistingBabelrcFiles(tree);
expect(readJson(tree, 'apps/missing-babel-presets/.babelrc')).toMatchObject(
{
presets: ['@nrwl/web/babel'],
}
);
expect(readJson(tree, 'apps/web-app/.babelrc')).toMatchObject({
presets: ['@nrwl/web/babel'],
});
expect(readJson(tree, 'apps/react-app/.babelrc')).toMatchObject({
presets: ['@nrwl/react/babel'],
});
expect(readJson(tree, 'apps/gatsby-app/.babelrc')).toMatchObject({
presets: ['@nrwl/gatsby/babel'],
});
expect(tree.exists('apps/not-using-babel/.babelrc')).not.toBeTruthy();
expect(readJson(tree, 'apps/next-app/.babelrc')).toMatchObject({
presets: ['@nrwl/next/babel'],
});
});
});