/
run-prettier.test.ts
44 lines (35 loc) · 1.39 KB
/
run-prettier.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
'use strict';
import fs from 'fs';
import path from 'path';
//eslint-disable-next-line node/no-extraneous-import
import rimraf from 'rimraf';
import { runPrettier } from '../src/run-prettier';
import { utils } from 'webpack-cli';
const { logger } = utils;
const outputPath = path.join(__dirname, 'test-assets');
const outputFile = path.join(outputPath, 'test.js');
const consoleSpy = jest.spyOn(logger, 'warn').mockImplementation();
describe('runPrettier', () => {
beforeEach(() => {
rimraf.sync(outputPath);
fs.mkdirSync(outputPath);
});
afterAll(() => {
rimraf.sync(outputPath);
});
it('should run prettier on JS string and write file', () => {
runPrettier(outputFile, 'console.log("1");console.log("2");');
expect(fs.existsSync(outputFile)).toBeTruthy();
const data = fs.readFileSync(outputFile, 'utf8');
expect(data).toContain("console.log('1');\n");
expect(consoleSpy).toHaveBeenCalledTimes(0);
});
it('prettier should fail on invalid JS, with file still written', () => {
runPrettier(outputFile, '"');
expect(fs.existsSync(outputFile)).toBeTruthy();
const data = fs.readFileSync(outputFile, 'utf8');
expect(data).toContain('"');
expect(consoleSpy).toHaveBeenCalledTimes(1);
expect(consoleSpy.mock.calls[0][0]).toContain('WARNING: Could not apply prettier');
});
});