71 lines
2.2 KiB
TypeScript
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();
|
|
});
|
|
});
|