nx/packages/js/src/generators/init/init.spec.ts

71 lines
2.2 KiB
TypeScript

import { writeJson, readJson, Tree } from '@nrwl/devkit';
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import init from './init';
describe('js init generator', () => {
let tree: Tree;
beforeEach(() => {
tree = createTreeWithEmptyWorkspace();
});
it('should install prettier package', async () => {
await init(tree, {});
const packageJson = readJson(tree, 'package.json');
expect(packageJson.devDependencies['prettier']).toBeDefined();
});
it('should create .prettierrc and .prettierignore files', async () => {
await init(tree, {});
const prettierrc = readJson(tree, '.prettierrc');
expect(prettierrc).toEqual({ singleQuote: true });
const prettierignore = tree.read('.prettierignore', 'utf-8');
expect(prettierignore).toMatch(/\n\/coverage/);
expect(prettierignore).toMatch(/\n\/dist/);
});
it('should not overwrite existing .prettierrc and .prettierignore files', async () => {
writeJson(tree, '.prettierrc', { singleQuote: false });
tree.write('.prettierignore', `# custom ignore file`);
await init(tree, {});
const prettierrc = readJson(tree, '.prettierrc');
expect(prettierrc).toEqual({ singleQuote: false });
const prettierignore = tree.read('.prettierignore', 'utf-8');
expect(prettierignore).toContain('# custom ignore file');
});
it('should add prettier vscode extension if .vscode/extensions.json file exists', async () => {
// No existing recommendations
writeJson(tree, '.vscode/extensions.json', {});
await init(tree, {});
let json = readJson(tree, '.vscode/extensions.json');
expect(json).toEqual({
recommendations: ['esbenp.prettier-vscode'],
});
// Existing recommendations
writeJson(tree, '.vscode/extensions.json', { recommendations: ['foo'] });
await init(tree, {});
json = readJson(tree, '.vscode/extensions.json');
expect(json).toEqual({
recommendations: ['foo', 'esbenp.prettier-vscode'],
});
});
it('should skip adding prettier extension if .vscode/extensions.json file does not exist', async () => {
await init(tree, {});
expect(tree.exists('.vscode/extensions.json')).toBeFalsy();
});
});