|
1 | 1 | import dedent from 'dedent'
|
2 |
| -import { expect, test } from 'vitest' |
| 2 | +import { describe, expect, test } from 'vitest' |
3 | 3 | import { extractStaticImportMap, findSimplePlugins } from './extract-static-imports'
|
4 | 4 |
|
5 | 5 | const js = dedent
|
6 | 6 |
|
7 |
| -test('extracts different kind of imports from an ESM file', () => { |
8 |
| - let extracted = extractStaticImportMap(js` |
9 |
| - import plugin1 from './plugin1' |
10 |
| - import * as plugin2 from './plugin2' |
11 |
| - import plugin6, { plugin3, plugin4, default as plugin5 } from './plugin3' |
12 |
| - import plugin8, * as plugin7 from './plugin7' |
13 |
| - `) |
| 7 | +describe('findSimplePlugins', () => { |
| 8 | + test('parses all export styles', () => { |
| 9 | + expect( |
| 10 | + findSimplePlugins(js` |
| 11 | + import plugin1 from './plugin1' |
| 12 | + import * as plugin2 from './plugin2' |
14 | 13 |
|
15 |
| - expect(extracted).toEqual({ |
16 |
| - plugin1: { module: './plugin1', export: null }, |
17 |
| - plugin2: { module: './plugin2', export: '*' }, |
18 |
| - plugin3: { module: './plugin3', export: 'plugin3' }, |
19 |
| - plugin4: { module: './plugin3', export: 'plugin4' }, |
20 |
| - plugin5: { module: './plugin3', export: 'default' }, |
21 |
| - plugin6: { module: './plugin3', export: null }, |
22 |
| - plugin7: { module: './plugin7', export: '*' }, |
23 |
| - plugin8: { module: './plugin7', export: null }, |
24 |
| - }) |
25 |
| -}) |
| 14 | + export default { |
| 15 | + plugins: [plugin1, plugin2, 'plugin3'] |
| 16 | + } |
| 17 | + `), |
| 18 | + ).toEqual(['./plugin1', './plugin2', 'plugin3']) |
| 19 | + |
| 20 | + expect( |
| 21 | + findSimplePlugins(js` |
| 22 | + import plugin1 from './plugin1' |
| 23 | + import * as plugin2 from './plugin2' |
| 24 | +
|
| 25 | + export default { |
| 26 | + plugins: [plugin1, plugin2, 'plugin3'] |
| 27 | + } as any |
| 28 | + `), |
| 29 | + ).toEqual(['./plugin1', './plugin2', 'plugin3']) |
| 30 | + |
| 31 | + expect( |
| 32 | + findSimplePlugins(js` |
| 33 | + import plugin1 from './plugin1' |
| 34 | + import * as plugin2 from './plugin2' |
| 35 | +
|
| 36 | + export default { |
| 37 | + plugins: [plugin1, plugin2, 'plugin3'] |
| 38 | + } satisfies any |
| 39 | + `), |
| 40 | + ).toEqual(['./plugin1', './plugin2', 'plugin3']) |
| 41 | + |
| 42 | + expect( |
| 43 | + findSimplePlugins(js` |
| 44 | + import plugin1 from './plugin1' |
| 45 | + import * as plugin2 from './plugin2' |
| 46 | +
|
| 47 | + module.exports = { |
| 48 | + plugins: [plugin1, plugin2, 'plugin3'] |
| 49 | + } as any |
| 50 | + `), |
| 51 | + ).toEqual(['./plugin1', './plugin2', 'plugin3']) |
26 | 52 |
|
27 |
| -test('find simple plugins', () => { |
28 |
| - expect( |
29 |
| - findSimplePlugins(js` |
| 53 | + expect( |
| 54 | + findSimplePlugins(js` |
| 55 | + import plugin1 from './plugin1' |
| 56 | + import * as plugin2 from './plugin2' |
| 57 | +
|
| 58 | + module.exports = { |
| 59 | + plugins: [plugin1, plugin2, 'plugin3'] |
| 60 | + } satisfies any |
| 61 | + `), |
| 62 | + ).toEqual(['./plugin1', './plugin2', 'plugin3']) |
| 63 | + |
| 64 | + expect( |
| 65 | + findSimplePlugins(js` |
30 | 66 | import plugin1 from './plugin1'
|
31 | 67 | import * as plugin2 from './plugin2'
|
32 | 68 |
|
33 |
| - export default { |
| 69 | + module.exports = { |
34 | 70 | plugins: [plugin1, plugin2, 'plugin3']
|
35 | 71 | }
|
36 | 72 | `),
|
37 |
| - ).toEqual(['./plugin1', './plugin2', 'plugin3']) |
| 73 | + ).toEqual(['./plugin1', './plugin2', 'plugin3']) |
| 74 | + }) |
38 | 75 |
|
39 |
| - expect( |
40 |
| - findSimplePlugins(js` |
| 76 | + test('bails out on inline plugins', () => { |
| 77 | + expect( |
| 78 | + findSimplePlugins(js` |
41 | 79 | import plugin1 from './plugin1'
|
42 | 80 |
|
43 | 81 | export default {
|
44 | 82 | plugins: [plugin1, () => {} ]
|
45 | 83 | }
|
46 | 84 | `),
|
47 |
| - ).toEqual(null) |
| 85 | + ).toEqual(null) |
48 | 86 |
|
49 |
| - expect( |
50 |
| - findSimplePlugins(js` |
| 87 | + expect( |
| 88 | + findSimplePlugins(js` |
51 | 89 | let plugin1 = () => {}
|
52 | 90 |
|
53 | 91 | export default {
|
54 | 92 | plugins: [plugin1]
|
55 | 93 | }
|
56 | 94 | `),
|
57 |
| - ).toEqual(null) |
| 95 | + ).toEqual(null) |
| 96 | + }) |
58 | 97 |
|
59 |
| - expect( |
60 |
| - findSimplePlugins(js` |
| 98 | + test('bails out on named imports for plugins', () => { |
| 99 | + expect( |
| 100 | + findSimplePlugins(js` |
61 | 101 | import {plugin1} from './plugin1'
|
62 | 102 |
|
63 | 103 | export default {
|
64 | 104 | plugins: [plugin1]
|
65 | 105 | }
|
66 | 106 | `),
|
67 |
| - ).toEqual(null) |
| 107 | + ).toEqual(null) |
| 108 | + }) |
68 | 109 |
|
69 |
| - expect( |
70 |
| - findSimplePlugins(js` |
| 110 | + test('returns no plugins if none are exported', () => { |
| 111 | + expect( |
| 112 | + findSimplePlugins(js` |
71 | 113 | export default {
|
72 | 114 | plugins: []
|
73 | 115 | }
|
74 | 116 | `),
|
75 |
| - ).toEqual([]) |
| 117 | + ).toEqual([]) |
76 | 118 |
|
77 |
| - expect( |
78 |
| - findSimplePlugins(js` |
| 119 | + expect( |
| 120 | + findSimplePlugins(js` |
79 | 121 | export default {}
|
80 | 122 | `),
|
81 |
| - ).toEqual([]) |
| 123 | + ).toEqual([]) |
| 124 | + }) |
| 125 | +}) |
| 126 | + |
| 127 | +describe('extractStaticImportMap', () => { |
| 128 | + test('extracts different kind of imports from an ESM file', () => { |
| 129 | + let extracted = extractStaticImportMap(js` |
| 130 | + import plugin1 from './plugin1' |
| 131 | + import * as plugin2 from './plugin2' |
| 132 | + import plugin6, { plugin3, plugin4, default as plugin5 } from './plugin3' |
| 133 | + import plugin8, * as plugin7 from './plugin7' |
| 134 | + `) |
| 135 | + |
| 136 | + expect(extracted).toEqual({ |
| 137 | + plugin1: { module: './plugin1', export: null }, |
| 138 | + plugin2: { module: './plugin2', export: '*' }, |
| 139 | + plugin3: { module: './plugin3', export: 'plugin3' }, |
| 140 | + plugin4: { module: './plugin3', export: 'plugin4' }, |
| 141 | + plugin5: { module: './plugin3', export: 'default' }, |
| 142 | + plugin6: { module: './plugin3', export: null }, |
| 143 | + plugin7: { module: './plugin7', export: '*' }, |
| 144 | + plugin8: { module: './plugin7', export: null }, |
| 145 | + }) |
| 146 | + }) |
82 | 147 | })
|
0 commit comments