-
Notifications
You must be signed in to change notification settings - Fork 380
/
nest.collection.spec.ts
97 lines (96 loc) 路 2.98 KB
/
nest.collection.spec.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
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
import { AbstractRunner } from '../../../lib/runners';
import { NestCollection } from '../../../lib/schematics/nest.collection';
describe('Nest Collection', () => {
[
'application',
'class',
'configuration',
'controller',
'decorator',
'library',
'filter',
'gateway',
'guard',
'interceptor',
'interface',
'middleware',
'module',
'pipe',
'provider',
'resolver',
'service',
'sub-app',
'resource',
].forEach((schematic) => {
it(`should call runner with ${schematic} schematic name`, async () => {
const mock = jest.fn();
mock.mockImplementation(() => {
return {
logger: {},
run: jest.fn().mockImplementation(() => Promise.resolve()),
};
});
const mockedRunner = mock();
const collection = new NestCollection(mockedRunner as AbstractRunner);
await collection.execute(schematic, []);
expect(mockedRunner.run).toHaveBeenCalledWith(
`@nestjs/schematics:${schematic}`,
);
});
});
[
{ name: 'application', alias: 'application' },
{ name: 'class', alias: 'cl' },
{ name: 'configuration', alias: 'config' },
{ name: 'controller', alias: 'co' },
{ name: 'decorator', alias: 'd' },
{ name: 'library', alias: 'lib' },
{ name: 'filter', alias: 'f' },
{ name: 'gateway', alias: 'ga' },
{ name: 'guard', alias: 'gu' },
{ name: 'interceptor', alias: 'itc' },
{ name: 'interface', alias: 'itf' },
{ name: 'middleware', alias: 'mi' },
{ name: 'module', alias: 'mo' },
{ name: 'pipe', alias: 'pi' },
{ name: 'provider', alias: 'pr' },
{ name: 'resolver', alias: 'r' },
{ name: 'service', alias: 's' },
{ name: 'sub-app', alias: 'app' },
{ name: 'resource', alias: 'res' },
].forEach((schematic) => {
it(`should call runner with schematic ${schematic.name} name when use ${schematic.alias} alias`, async () => {
const mock = jest.fn();
mock.mockImplementation(() => {
return {
logger: {},
run: jest.fn().mockImplementation(() => Promise.resolve()),
};
});
const mockedRunner = mock();
const collection = new NestCollection(mockedRunner as AbstractRunner);
await collection.execute(schematic.alias, []);
expect(mockedRunner.run).toHaveBeenCalledWith(
`@nestjs/schematics:${schematic.name}`,
);
});
});
it('should throw an error when schematic name is not in nest collection', async () => {
const mock = jest.fn();
mock.mockImplementation(() => {
return {
logger: {},
run: jest.fn().mockImplementation(() => Promise.resolve()),
};
});
const mockedRunner = mock();
const collection = new NestCollection(mockedRunner as AbstractRunner);
try {
await collection.execute('name', []);
} catch (error) {
expect(error.message).toEqual(
'Invalid schematic "name". Please, ensure that "name" exists in this collection.',
);
}
});
});