nx/packages/workspace/src/schematics/move/lib/update-jest-config.spec.ts
2021-01-05 12:13:10 -05:00

68 lines
2.2 KiB
TypeScript

import { Tree } from '@angular-devkit/schematics';
import { UnitTestTree } from '@angular-devkit/schematics/testing';
import { createEmptyWorkspace } from '@nrwl/workspace/testing';
import { callRule, runSchematic } from '../../../utils/testing';
import { Schema } from '../schema';
import { updateJestConfig } from './update-jest-config';
describe('updateJestConfig Rule', () => {
let tree: UnitTestTree;
beforeEach(async () => {
tree = new UnitTestTree(Tree.empty());
tree = createEmptyWorkspace(tree) as UnitTestTree;
});
it('should handle jest config not existing', async () => {
tree = await runSchematic('lib', { name: 'my-source' }, tree);
const schema: Schema = {
projectName: 'my-source',
destination: 'my-destination',
importPath: undefined,
updateImportPath: true,
};
await expect(
callRule(updateJestConfig(schema), tree)
).resolves.not.toThrow();
});
it('should update the name and coverage directory', async () => {
const jestConfig = `module.exports = {
name: 'my-source',
preset: '../../jest.config.js',
coverageDirectory: '../../coverage/libs/my-source',
snapshotSerializers: [
'jest-preset-angular/AngularSnapshotSerializer.js',
'jest-preset-angular/HTMLCommentSerializer.js'
]
};`;
const jestConfigPath = '/libs/my-destination/jest.config.js';
const rootJestConfigPath = '/jest.config.js';
tree = await runSchematic('lib', { name: 'my-source' }, tree);
tree.create(jestConfigPath, jestConfig);
const schema: Schema = {
projectName: 'my-source',
destination: 'my-destination',
importPath: undefined,
updateImportPath: true,
};
tree = (await callRule(updateJestConfig(schema), tree)) as UnitTestTree;
const jestConfigAfter = tree.read(jestConfigPath).toString();
const rootJestConfigAfter = tree.read(rootJestConfigPath).toString();
expect(jestConfigAfter).toContain(`name: 'my-destination'`);
expect(jestConfigAfter).toContain(
`coverageDirectory: '../../coverage/libs/my-destination'`
);
expect(rootJestConfigAfter).not.toContain('<rootDir>/libs/my-source');
expect(rootJestConfigAfter).toContain('<rootDir>/libs/my-destination');
});
});