nx/packages/angular/src/migrations/update-16-0-0/remove-karma-defaults.spec.ts

196 lines
4.5 KiB
TypeScript

import {
addProjectConfiguration,
readNxJson,
readProjectConfiguration,
updateNxJson,
} from '@nx/devkit';
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
import removeKarmaDefaults from './remove-karma-defaults';
describe('removeKarmaDefaults', () => {
it('should remove karma as default unit test runner from nx.json when exists', async () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();
const nxJson = readNxJson(tree);
nxJson.generators = {
'@nrwl/angular:application': {
unitTestRunner: 'karma',
},
'@nrwl/angular:library': {
unitTestRunner: 'karma',
},
'@nrwl/angular:host': {
unitTestRunner: 'karma',
},
'@nrwl/angular:remote': {
unitTestRunner: 'karma',
},
};
updateNxJson(tree, nxJson);
// ACT
await removeKarmaDefaults(tree);
// ASSERT
expect(readNxJson(tree).generators).toMatchInlineSnapshot(`
{
"@nrwl/angular:application": {},
"@nrwl/angular:host": {},
"@nrwl/angular:library": {},
"@nrwl/angular:remote": {},
}
`);
});
it('should only remove karma as default unit test runner from nx.json when set', async () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();
const nxJson = readNxJson(tree);
nxJson.generators = {
'@nrwl/angular:application': {
style: 'scss',
unitTestRunner: 'karma',
},
'@nrwl/angular:library': {
unitTestRunner: 'jest',
},
'@nrwl/angular:host': {
style: 'scss',
unitTestRunner: 'karma',
},
'@nrwl/angular:remote': {
unitTestRunner: 'jest',
},
};
updateNxJson(tree, nxJson);
// ACT
await removeKarmaDefaults(tree);
// ASSERT
expect(readNxJson(tree).generators).toMatchInlineSnapshot(`
{
"@nrwl/angular:application": {
"style": "scss",
},
"@nrwl/angular:host": {
"style": "scss",
},
"@nrwl/angular:library": {
"unitTestRunner": "jest",
},
"@nrwl/angular:remote": {
"unitTestRunner": "jest",
},
}
`);
});
it('should not remove karma as default unit test runner from unsupported generator', async () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();
const nxJson = readNxJson(tree);
nxJson.generators = {
'@my/custom:plugin': {
style: 'scss',
unitTestRunner: 'karma',
},
};
updateNxJson(tree, nxJson);
// ACT
await removeKarmaDefaults(tree);
// ASSERT
expect(readNxJson(tree).generators).toMatchInlineSnapshot(`
{
"@my/custom:plugin": {
"style": "scss",
"unitTestRunner": "karma",
},
}
`);
});
it('should remove karma as default for project specific generators', async () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();
addProjectConfiguration(tree, 'test', {
name: 'test',
root: '.',
sourceRoot: 'src',
generators: {
'@nrwl/angular:application': {
style: 'scss',
unitTestRunner: 'karma',
},
},
});
// ACT
await removeKarmaDefaults(tree);
// ASSERT
expect(readProjectConfiguration(tree, 'test').generators)
.toMatchInlineSnapshot(`
{
"@nrwl/angular:application": {
"style": "scss",
},
}
`);
});
it('should remove karma when using nested generator default syntax', async () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace();
const nxJson = readNxJson(tree);
nxJson.generators = {
'@nrwl/angular:application': {
style: 'scss',
unitTestRunner: 'karma',
},
'@nrwl/angular:library': {
unitTestRunner: 'jest',
},
'@nrwl/angular': {
host: {
style: 'scss',
unitTestRunner: 'karma',
},
remote: {
unitTestRunner: 'jest',
},
},
};
updateNxJson(tree, nxJson);
// ACT
await removeKarmaDefaults(tree);
// ASSERT
expect(readNxJson(tree).generators).toMatchInlineSnapshot(`
{
"@nrwl/angular": {
"host": {
"style": "scss",
},
"remote": {
"unitTestRunner": "jest",
},
},
"@nrwl/angular:application": {
"style": "scss",
},
"@nrwl/angular:library": {
"unitTestRunner": "jest",
},
}
`);
});
});