nx/packages/angular/src/migrations/update-15-2-0/remove-browserlist-config.spec.ts

82 lines
2.9 KiB
TypeScript

import type { Tree } from '@nx/devkit';
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
import { generateTestApplication } from '../../generators/utils/testing';
import removeBrowserlistConfig, {
DEFAULT_BROWSERS,
} from './remove-browserlist-config';
describe('Migration to delete Browserslist configurations', () => {
let tree: Tree;
beforeEach(async () => {
tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
await generateTestApplication(tree, {
name: 'test',
});
});
describe('given the Browserslist config matches the default', () => {
it('should delete ".browserslistrc" file', async () => {
tree.write(
'apps/test/src/app/.browserslistrc',
DEFAULT_BROWSERS.join('\n')
);
expect(tree.exists('apps/test/src/app/.browserslistrc')).toBeTruthy();
await removeBrowserlistConfig(tree);
expect(tree.exists('apps/test/src/app/.browserslistrc')).toBeFalsy();
});
it(`should not delete "browserslist" in 'node_modules'`, async () => {
tree.write('node_modules/browserslist', DEFAULT_BROWSERS.join('\n'));
tree.write('node_modules/.browserslistrc', DEFAULT_BROWSERS.join('\n'));
await removeBrowserlistConfig(tree);
expect(tree.exists('node_modules/browserslist')).toBeTruthy();
expect(tree.exists('node_modules/.browserslistrc')).toBeTruthy();
});
});
describe('given the Browserslist config does not match the default', () => {
it('should not delete "browserslist"', async () => {
tree.write('apps/test/src/app/browserslist', 'last 1 Chrome version');
await removeBrowserlistConfig(tree);
expect(tree.exists('apps/test/src/app/browserslist')).toBeTruthy();
});
it('should not delete ".browserslistrc"', async () => {
tree.write('apps/test/src/app/.browserslistrc', 'last 1 Chrome version');
await removeBrowserlistConfig(tree);
expect(tree.exists('apps/test/src/app/.browserslistrc')).toBeTruthy();
});
it('should delete ".browserslistrc" file when it only includes non supported ES5 browsers', async () => {
tree.write(
'apps/test/src/app/.browserslistrc',
[...DEFAULT_BROWSERS, 'IE 10'].join('\n')
);
expect(tree.exists('apps/test/src/app/.browserslistrc')).toBeTruthy();
await removeBrowserlistConfig(tree);
expect(tree.exists('apps/test/src/app/.browserslistrc')).toBeFalsy();
});
it('should not delete ".browserslistrc" file when it includes additional config sections', async () => {
tree.write(
'apps/test/src/app/.browserslistrc',
`
${DEFAULT_BROWSERS.join('\n')}
[modern]
last 1 chrome version
`
);
expect(tree.exists('apps/test/src/app/.browserslistrc')).toBeTruthy();
await removeBrowserlistConfig(tree);
expect(tree.exists('apps/test/src/app/.browserslistrc')).toBeTruthy();
});
});
});