nx/packages/react/src/migrations/update-9-4-0/babelrc-9-4-0.spec.ts

75 lines
2.2 KiB
TypeScript

import { Tree } from '@angular-devkit/schematics';
import { SchematicTestRunner } from '@angular-devkit/schematics/testing';
import * as path from 'path';
import { createEmptyWorkspace } from '@nrwl/workspace/testing';
import { createApp, createLib, createWebApp } from '../../utils/testing';
describe('Migrate babel setup', () => {
let tree: Tree;
let schematicRunner: SchematicTestRunner;
beforeEach(async () => {
tree = Tree.empty();
tree = createEmptyWorkspace(tree);
schematicRunner = new SchematicTestRunner(
'@nrwl/react',
path.join(__dirname, '../../../migrations.json')
);
tree.overwrite(
'package.json',
JSON.stringify({
dependencies: {
react: '16.13.1',
'react-dom': '16.13.1',
},
})
);
});
it(`should create .babelrc for projects without them`, async () => {
tree = await createApp(tree, 'demo');
tree = await createLib(tree, 'ui');
tree = await schematicRunner
.runSchematicAsync('babelrc-9.4.0', {}, tree)
.toPromise();
expect(tree.exists('/babel.config.json')).toBe(true);
expect(tree.exists('/apps/demo/.babelrc')).toBe(true);
expect(tree.exists('/libs/ui/.babelrc')).toBe(true);
});
it(`should not overwrite existing .babelrc files`, async () => {
tree = await createApp(tree, 'demo');
tree.create('/apps/demo/.babelrc', '{}');
tree = await schematicRunner
.runSchematicAsync('babelrc-9.4.0', {}, tree)
.toPromise();
const content = tree.read('/apps/demo/.babelrc').toString();
expect(content).toEqual('{}');
});
it(`should not migrate non-React projects`, async () => {
tree = await createWebApp(tree, 'demo');
tree = await schematicRunner
.runSchematicAsync('babelrc-9.4.0', {}, tree)
.toPromise();
expect(tree.exists('/apps/demo/.babelrc')).toBe(false);
});
it(`should not overwrite babel.config.js file`, async () => {
tree.create('/babel.config.js', 'module.exports = {};');
tree = await schematicRunner
.runSchematicAsync('babelrc-9.4.0', {}, tree)
.toPromise();
expect(tree.exists('/babel.config.js')).toBe(true);
expect(tree.exists('/babel.config.json')).toBe(false);
});
});