Skip to content

Commit f19a62a

Browse files
refactor(tests): factorize default file creation
1 parent 2cbe3e5 commit f19a62a

File tree

2 files changed

+55
-67
lines changed

2 files changed

+55
-67
lines changed

tests/basic.test.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
const { defaultFilesVue2, defaultFiles, createPage } = require('./testsTools.js');
1+
const { defaultFilesFactory, createPage } = require('./testsTools.js');
22

33
[
4-
{desc: "vue 2", vueTarget: 2, files: defaultFilesVue2},
5-
{desc: "vue 3", vueTarget: 3, files: defaultFiles},
4+
{ desc: "vue 2", vueTarget: 2 },
5+
{ desc: "vue 3", vueTarget: 3 },
66
]
77
.filter(({ vueTarget }) => !process.env.vueTarget || vueTarget === Number(process.env.vueTarget) )
88
.map(e => { console.log('tests vue ' + e.vueTarget); return e })
9-
.forEach(({desc, vueTarget, files}) => {
9+
.forEach(({ desc, vueTarget }) => {
1010
describe(desc, () => {
1111

12+
const files = defaultFilesFactory({ vueTarget });
1213

1314
test('text-only template', async () => {
1415

tests/testsTools.js

Lines changed: 50 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,12 @@ afterAll(async () => {
108108
});
109109

110110

111-
const defaultFiles = {
112-
'/vue3-sfc-loader.js': Fs.readFileSync(Path.join(__dirname, '../dist/vue3-sfc-loader.js'), { encoding: 'utf-8' }),
113-
'/vue': Fs.readFileSync(Path.join(__dirname, '../node_modules/vue/dist/vue.global.js'), { encoding: 'utf-8' }),
111+
const defaultFilesFactory = ({ vueTarget }) => ({
112+
113+
[`/vue${ vueTarget }-sfc-loader.js`]: Fs.readFileSync(Path.join(__dirname, `../dist/vue${ vueTarget }-sfc-loader.js`), { encoding: 'utf-8' }),
114+
115+
'/vue': Fs.readFileSync(Path.join(__dirname, [,,'../node_modules/vue2/dist/vue.runtime.js','../node_modules/vue/dist/vue.global.js'][vueTarget]), { encoding: 'utf-8' }),
116+
114117
'/options.js': `
115118
116119
class HttpError extends Error {
@@ -157,9 +160,12 @@ const defaultFiles = {
157160
158161
export default options;
159162
`,
163+
164+
160165
'/optionsOverride.js': `
161166
export default () => {};
162167
`,
168+
163169
'/boot.js': `
164170
export default ({ options, createApp, mountApp }) => createApp(options).then(app => mountApp(app));
165171
`,
@@ -168,86 +174,67 @@ const defaultFiles = {
168174
<!DOCTYPE html>
169175
<html><body>
170176
<script src="vue"></script>
171-
<script src="vue3-sfc-loader.js"></script>
177+
<script src="vue${ vueTarget }-sfc-loader.js"></script>
172178
<!-- scripts -->
173179
<script type="module">
174180
175181
import boot from '/boot.js'
176182
import options from '/options.js'
177183
import optionsOverride from '/optionsOverride.js'
178184
179-
const { loadModule } = window['vue3-sfc-loader'];
185+
const { loadModule } = window['vue${ vueTarget }-sfc-loader'];
180186
181187
function createApp(options) {
182188
183-
return loadModule('./component.vue', options).then((component) => Vue.createApp(component));
189+
switch ( ${ vueTarget } ) {
190+
case 3: {
191+
192+
return loadModule('./component.vue', options).then((component) => Vue.createApp(component));
193+
}
194+
195+
case 2: {
196+
197+
return loadModule('./component.vue', options).then((component) => new Vue(component));
198+
}
199+
}
184200
}
185201
186202
function mountApp(app, eltId = 'app') {
187203
188-
if ( !document.getElementById(eltId) ) {
204+
switch ( ${ vueTarget } ) {
205+
case 3: {
189206
190-
const parent = document.body;
191-
const elt = document.createElement('div');
192-
elt.id = eltId;
193-
parent.insertBefore(elt, parent.firstChild);
194-
}
207+
if ( !document.getElementById(eltId) ) {
195208
196-
return app.mount('#' + eltId);
197-
}
198-
199-
optionsOverride(options)
209+
const parent = document.body;
210+
const elt = document.createElement('div');
211+
elt.id = eltId;
212+
parent.insertBefore(elt, parent.firstChild);
213+
}
200214
201-
boot({ options, createApp, mountApp, Vue })
202-
.then(app => app.$el.parentNode.vueApp = app);
215+
return app.mount('#' + eltId);
216+
}
203217
204-
//window._done && window._done();
218+
case 2: {
205219
206-
</script>
207-
</body></html>
208-
`
209-
}
220+
const mountElId = eltId + 'Mount';
210221
211-
const defaultFilesVue2 = {
212-
'/vue2-sfc-loader.js': Fs.readFileSync(Path.join(__dirname, '../dist/vue2-sfc-loader.js'), { encoding: 'utf-8' }),
213-
'/vue': Fs.readFileSync(Path.join(__dirname, '../node_modules/vue2/dist/vue.runtime.js'), { encoding: 'utf-8' }),
214-
'/options.js': defaultFiles['/options.js'],
215-
'/optionsOverride.js': defaultFiles['/optionsOverride.js'],
216-
'/boot.js': defaultFiles['/boot.js'],
217-
'/index.html': `
218-
<!DOCTYPE html>
219-
<html><body>
220-
<script src="vue"></script>
221-
<script src="vue2-sfc-loader.js"></script>
222-
<!-- scripts -->
223-
<script type="module">
224-
225-
import boot from '/boot.js'
226-
import options from '/options.js'
227-
import optionsOverride from '/optionsOverride.js'
222+
if ( !document.getElementById(mountElId) ) {
228223
229-
const { loadModule } = window['vue2-sfc-loader'];
224+
const parent = document.body;
225+
const appElt = document.createElement('div');
226+
appElt.id = eltId;
230227
231-
function createApp(options) {
232-
return loadModule('./component.vue', options).then((component) => new Vue(component));
233-
}
228+
const mountElt = document.createElement('div');
229+
mountElt.id = mountElId;
234230
235-
function mountApp(app, eltId = 'app') {
236-
237-
const mountElId = eltId + 'Mount'
238-
if ( !document.getElementById(mountElId) ) {
239-
const parent = document.body;
240-
const appElt = document.createElement('div');
241-
appElt.id = eltId;
242-
243-
const mountElt = document.createElement('div');
244-
mountElt.id = mountElId;
245-
246-
appElt.insertBefore(mountElt, appElt.firstChild);
247-
parent.insertBefore(appElt, parent.firstChild);
248-
}
231+
appElt.insertBefore(mountElt, appElt.firstChild);
232+
parent.insertBefore(appElt, parent.firstChild);
233+
}
249234
250-
return app.$mount('#' + mountElId);
235+
return app.$mount('#' + mountElId);
236+
}
237+
}
251238
}
252239
253240
optionsOverride(options)
@@ -259,11 +246,11 @@ const defaultFilesVue2 = {
259246
260247
</script>
261248
</body></html>
262-
`
263-
}
249+
`,
250+
});
251+
264252

265253
module.exports = {
266-
defaultFiles,
267-
defaultFilesVue2,
254+
defaultFilesFactory,
268255
createPage,
269256
}

0 commit comments

Comments
 (0)