This repository was archived by the owner on Nov 17, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathgenerator.test.ts
105 lines (97 loc) · 2.97 KB
/
generator.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
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
import { expect, it, describe } from 'vitest';
import { generateExports, checkExportData, removeExportData } from '../src/service/runtimeGenerator';
describe('generateExports', () => {
it('basic usage', () => {
const { importStr, exportStr } = generateExports([{
source: 'react-router',
specifier: 'Router',
type: false,
}]);
expect(importStr).toBe('import Router from \'react-router\';');
expect(exportStr).toBe('Router,')
});
it('type export', () => {
const { importStr, exportStr } = generateExports([{
source: 'react-router',
specifier: 'Router',
type: true,
}]);
expect(importStr).toBe('import type Router from \'react-router\';');
expect(exportStr).toBe('Router;')
});
it('named exports', () => {
const { importStr, exportStr } = generateExports([{
source: 'react-router',
specifier: ['Switch', 'Route'],
}]);
expect(importStr).toBe('import { Switch, Route } from \'react-router\';');
expect(exportStr).toBe(['Switch,', 'Route,'].join('\n'));
});
it('aliased exports', () => {
const { importStr, exportStr } = generateExports([{
source: 'react-helmet',
specifier: 'Helmet',
exportAlias: {
'Helmet': 'Head',
},
}]);
expect(importStr).toBe('import Helmet from \'react-helmet\';');
expect(exportStr).toBe('Head: Helmet,');
});
});
const defaultExportData = [{
source: 'react-router',
specifier: ['Switch', 'Route'],
}, {
source: 'react-helmet',
specifier: 'Helmet',
}];
describe('checkExportData', () => {
it('basic usage', () => {
try {
checkExportData(defaultExportData, { source: 'react-dom', specifier: 'react-dom' }, 'test-api');
expect(true).toBe(true);
} catch (err) {
expect(true).toBe(false);
}
});
it('duplicate named export', () => {
try {
checkExportData(defaultExportData, defaultExportData[0], 'test-api');
expect(true).toBe(false);
} catch (err) {
expect(true).toBe(true);
}
})
it('duplicate exports', () => {
try {
checkExportData(defaultExportData, defaultExportData, 'test-api');
expect(true).toBe(false);
} catch (err) {
expect(true).toBe(true);
}
})
it('duplicate default export', () => {
try {
checkExportData(defaultExportData, { source: 'react-dom', specifier: 'Switch' }, 'test-api');
expect(true).toBe(false);
} catch (err) {
expect(true).toBe(true);
}
})
});
describe('removeExportData', () => {
it('basic usage', () => {
const removed = removeExportData(defaultExportData, 'react-router');
expect(removed.length).toBe(1);
expect(removed[0].source).toBe('react-helmet');
});
it('fail to remove', () => {
const removed = removeExportData(defaultExportData, ['react-dom']);
expect(removed.length).toBe(2);
});
it('remove exports', () => {
const removed = removeExportData(defaultExportData, ['react-router', 'react-helmet']);
expect(removed.length).toBe(0);
});
})