nx/packages/eslint/src/migrations/update-17-2-0/simplify-eslint-patterns.spec.ts

146 lines
3.6 KiB
TypeScript

import { Tree, addProjectConfiguration, readJson } from '@nx/devkit';
import update from './simplify-eslint-patterns';
import { createTreeWithEmptyWorkspace } from 'nx/src/devkit-testing-exports';
describe('simplify-eslint-patterns migration', () => {
let tree: Tree;
beforeEach(() => {
tree = createTreeWithEmptyWorkspace();
tree.write('.eslintrc.json', '{}');
});
it('should remove pattern if matches default', async () => {
addProjectConfiguration(tree, 'test-lib', {
root: 'libs/test-lib',
projectType: 'library',
targets: {
lint: {
executor: '@nx/eslint:lint',
options: {
lintFilePatterns: ['libs/test-lib/**/*.{ts,html}'],
},
},
},
});
await update(tree);
const projJson = readJson(tree, 'libs/test-lib/project.json');
expect(projJson.targets.lint).toMatchInlineSnapshot(`
{
"executor": "@nx/eslint:lint",
}
`);
});
it('should not remove options if other fields are set', async () => {
addProjectConfiguration(tree, 'test-lib', {
root: 'libs/test-lib',
projectType: 'library',
targets: {
lint: {
executor: '@nx/eslint:lint',
options: {
lintFilePatterns: ['libs/test-lib/**/*.{ts,html}'],
ignorePatterns: ['**/node_modules/**'],
},
},
},
});
await update(tree);
const projJson = readJson(tree, 'libs/test-lib/project.json');
expect(projJson.targets.lint).toMatchInlineSnapshot(`
{
"executor": "@nx/eslint:lint",
"options": {
"ignorePatterns": [
"**/node_modules/**",
],
},
}
`);
});
it('should remove multiple lint patterns if matches default', async () => {
addProjectConfiguration(tree, 'test-lib', {
root: 'libs/test-lib',
projectType: 'library',
targets: {
lint: {
executor: '@nx/eslint:lint',
options: {
lintFilePatterns: [
'libs/test-lib/**/*.ts',
'libs/test-lib/**/*.html',
'libs/test-lib/**/*.tsx',
],
},
},
},
});
await update(tree);
const projJson = readJson(tree, 'libs/test-lib/project.json');
expect(projJson.targets.lint).toMatchInlineSnapshot(`
{
"executor": "@nx/eslint:lint",
}
`);
});
it('should persist external patterns', async () => {
addProjectConfiguration(tree, 'test-lib', {
root: 'libs/test-lib',
projectType: 'library',
targets: {
lint: {
executor: '@nx/eslint:lint',
options: {
lintFilePatterns: [
'libs/test-lib/**/*.ts',
'libs/some-external/**/*.html',
'libs/test-lib/**/*.tsx',
'**/*.js',
],
},
},
},
});
await update(tree);
const projJson = readJson(tree, 'libs/test-lib/project.json');
expect(projJson.targets.lint.options.lintFilePatterns).toEqual([
'libs/test-lib',
'libs/some-external/**/*.html',
'**/*.js',
]);
});
it('should update standalone projects lint patterns', async () => {
addProjectConfiguration(tree, 'test-lib', {
root: '',
sourceRoot: './src',
projectType: 'library',
targets: {
lint: {
executor: '@nx/eslint:lint',
options: {
lintFilePatterns: ['./src/**/*.{ts,html}'],
},
},
},
});
await update(tree);
const projJson = readJson(tree, 'project.json');
expect(projJson.targets.lint.options.lintFilePatterns).toEqual(['./src']);
});
});