-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathwriteOutputFile.spec.ts
More file actions
110 lines (91 loc) · 3.28 KB
/
writeOutputFile.spec.ts
File metadata and controls
110 lines (91 loc) · 3.28 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import fs from 'node:fs';
import { writeOutputFile } from '../../helpers/writeOutputFile';
describe('writeOutputFile()', () => {
describe('when output directory does not exists', () => {
let existsSyncSpy: jest.SpyInstance;
let mkdirSyncSpy: jest.SpyInstance;
beforeEach(() => {
existsSyncSpy = jest.spyOn(fs, 'existsSync').mockReturnValue(false);
mkdirSyncSpy = jest.spyOn(fs, 'mkdirSync');
});
afterEach(() => {
jest.resetAllMocks();
jest.restoreAllMocks();
});
it('must create it', () => {
writeOutputFile({}, 'angularClient', 'output', 'custom.service', 'custom');
expect(existsSyncSpy).toHaveBeenCalled();
expect(mkdirSyncSpy).toHaveBeenCalled();
});
});
describe('when directory exists', () => {
let existsSyncSpy: jest.SpyInstance;
let mkdirSyncSpy: jest.SpyInstance;
beforeEach(() => {
existsSyncSpy = jest.spyOn(fs, 'existsSync').mockReturnValue(true);
mkdirSyncSpy = jest.spyOn(fs, 'mkdirSync');
});
afterEach(() => {
jest.resetAllMocks();
jest.restoreAllMocks();
});
it('must not create it', () => {
writeOutputFile({}, 'angularClient', 'output', 'custom.service', 'custom');
expect(existsSyncSpy).toHaveBeenCalled();
expect(mkdirSyncSpy).not.toHaveBeenCalled();
});
});
describe('must read template', () => {
let readFileSyncSpy: jest.SpyInstance;
beforeEach(() => {
readFileSyncSpy = jest.spyOn(fs, 'readFileSync');
});
it('for angularClient', () => {
writeOutputFile({}, 'angularClient', 'outputTest', 'custom.service', 'CustomTagname');
expect(readFileSyncSpy).toHaveBeenCalledWith(process.cwd() + '/src/templates/angularClient.hbs', 'utf-8');
});
it('for client', () => {
writeOutputFile({}, 'client', 'outputTest', 'custom', 'CustomTagname');
expect(readFileSyncSpy).toHaveBeenCalledWith(process.cwd() + '/src/templates/client.hbs', 'utf-8');
});
it('for server', () => {
writeOutputFile({}, 'server', 'outputTest', 'custom', 'CustomTagname');
expect(readFileSyncSpy).toHaveBeenCalledWith(process.cwd() + '/src/templates/server.hbs', 'utf-8');
});
it('for interfaces', () => {
writeOutputFile({}, 'interfaces', 'outputTest', 'custom', 'CustomTagname');
expect(readFileSyncSpy).toHaveBeenCalledWith(process.cwd() + '/src/templates/interfaces.hbs', 'utf-8');
});
});
describe('writting output files', () => {
let writeFileSyncSpy: jest.SpyInstance;
beforeEach(() => {
writeFileSyncSpy = jest.spyOn(fs, 'writeFileSync');
});
describe('using default params', () => {
it('must write file', () => {
writeOutputFile({}, 'angularClient');
expect(writeFileSyncSpy).toHaveBeenCalledWith(
process.cwd() + '/output/index.ts',
expect.stringMatching(/.*CustomService.*/),
'utf-8'
);
});
});
describe('passing params', () => {
it('must write file', () => {
writeOutputFile({}, 'angularClient', 'outputTest', 'my-custom.service', 'my-custom');
expect(writeFileSyncSpy).toHaveBeenCalledWith(
process.cwd() + '/outputTest/my-custom.service.ts',
expect.stringMatching(/.*MyCustomService.*/),
'utf-8'
);
});
});
});
});