Skip to content

Commit de5d92a

Browse files
committed
test: add router vue 3 tests
1 parent e84ed47 commit de5d92a

File tree

4 files changed

+79
-3
lines changed

4 files changed

+79
-3
lines changed

packages/@vue/cli-plugin-router/__tests__/routerGenerator.spec.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,77 @@ test('use with Babel', async () => {
6262

6363
expect(pkg.dependencies).toHaveProperty('vue-router')
6464
})
65+
66+
test('use with Vue 3', async () => {
67+
const { files, pkg } = await generateWithPlugin([
68+
{
69+
id: '@vue/cli-service',
70+
apply: require('@vue/cli-service/generator'),
71+
options: {
72+
vueVersion: '3'
73+
}
74+
},
75+
{
76+
id: '@vue/cli-plugin-router',
77+
apply: require('../generator'),
78+
options: {}
79+
}
80+
])
81+
82+
expect(files['src/router/index.js']).toBeTruthy()
83+
expect(files['src/router/index.js']).toMatch('createRouter')
84+
expect(files['src/router/index.js']).toMatch('history: createWebHashHistory()')
85+
86+
expect(files['src/main.js']).toMatch('.use(router)')
87+
88+
expect(pkg.dependencies).toHaveProperty('vue-router')
89+
expect(pkg.dependencies['vue-router']).toMatch('^4')
90+
})
91+
92+
test('Vue 3 + History Mode', async () => {
93+
const { files } = await generateWithPlugin([
94+
{
95+
id: '@vue/cli-service',
96+
apply: require('@vue/cli-service/generator'),
97+
options: {
98+
vueVersion: '3'
99+
}
100+
},
101+
{
102+
id: '@vue/cli-plugin-router',
103+
apply: require('../generator'),
104+
options: {
105+
historyMode: true
106+
}
107+
}
108+
])
109+
110+
expect(files['src/router/index.js']).toMatch(/import {.*createWebHistory/)
111+
expect(files['src/router/index.js']).toMatch('history: createWebHistory(process.env.BASE_URL)')
112+
})
113+
114+
test('Vue 3 + TypeScript', async () => {
115+
const { files } = await generateWithPlugin([
116+
{
117+
id: '@vue/cli-service',
118+
apply: require('@vue/cli-service/generator'),
119+
options: {
120+
vueVersion: '3'
121+
}
122+
},
123+
{
124+
id: '@vue/cli-plugin-router',
125+
apply: require('../generator'),
126+
options: {}
127+
},
128+
{
129+
id: '@vue/cli-plugin-typescript',
130+
apply: require('@vue/cli-plugin-typescript/generator'),
131+
options: {}
132+
}
133+
])
134+
135+
expect(files['src/router/index.ts']).toBeTruthy()
136+
expect(files['src/router/index.ts']).toMatch(/import {.*RouteRecordRaw/)
137+
expect(files['src/router/index.ts']).toMatch('const routes: Array<RouteRecordRaw> =')
138+
})

packages/@vue/cli-plugin-router/generator/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module.exports = (api, options = {}, rootOptions = {}) => {
44
api.injectImports(api.entryFile, `import router from './router'`)
55

66
if (isVue3) {
7-
api.transformScript(api.entryFile, require('./inject-use-router'))
7+
api.transformScript(api.entryFile, require('./injectUseRouter'))
88
api.extendPackage({
99
dependencies: {
1010
'vue-router': '^4.0.0-0'

packages/@vue/cli-plugin-router/generator/inject-use-router.js renamed to packages/@vue/cli-plugin-router/generator/injectUseRouter.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ module.exports = (file, api) => {
2121
appRoots.replaceWith(({ node: createAppCall }) => {
2222
return j.callExpression(
2323
j.memberExpression(createAppCall, j.identifier('use')),
24-
['router']
24+
[j.identifier('router')]
2525
)
2626
})
27+
28+
return root.toSource()
2729
}

packages/@vue/cli-plugin-router/generator/template-vue3/src/router/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const routes<% if (hasTypeScript) { %>: Array<RouteRecordRaw><% } %> = [
3636
const router = createRouter({
3737
<%_ if (historyMode) { _%>
3838
history: createWebHistory(process.env.BASE_URL),
39-
<%_ else { _%>
39+
<%_ } else { _%>
4040
history: createWebHashHistory(),
4141
<%_ } _%>
4242
routes

0 commit comments

Comments
 (0)