Skip to content

Commit 4e6083f

Browse files
committed
test(active-links): add more tests for redirects
1 parent 7e7a398 commit 4e6083f

File tree

2 files changed

+55
-23
lines changed

2 files changed

+55
-23
lines changed

Diff for: examples/active-links/app.js

+30-7
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,33 @@ const router = new VueRouter({
3434
routes: [
3535
{ path: '/', component: Home },
3636
{ path: '/about', component: About },
37-
{ path: '/users', component: Users,
38-
children: [
39-
{ path: ':username', name: 'user', component: User }
40-
]
37+
{
38+
path: '/redirect-gallery',
39+
name: 'redirect-gallery',
40+
redirect: { name: 'gallery' }
41+
},
42+
{
43+
path: '/redirect-image',
44+
name: 'redirect-image',
45+
redirect: { name: 'image', params: { imageId: 'image1' }}
4146
},
42-
{ path: '/gallery', component: Gallery, name: 'gallery',
47+
{
48+
path: '/users',
49+
component: Users,
50+
children: [{ path: ':username', name: 'user', component: User }]
51+
},
52+
{
53+
path: '/gallery',
54+
component: Gallery,
4355
children: [
56+
{
57+
path: '',
58+
name: 'gallery',
59+
redirect: { name: 'image', params: { imageId: 'image1' }}
60+
},
4461
{ path: ':imageId', component: Image, name: 'image' }
45-
], redirect: { name: 'image', params: { imageId: 'image1' }}}
62+
]
63+
}
4664
]
4765
})
4866

@@ -82,9 +100,14 @@ new Vue({
82100
<a>/about (active class on outer element)</a>
83101
</router-link>
84102
85-
<li><router-link :to="{ name: 'gallery' }">/gallery (redirect to /gallery/image1)</router-link></li>
103+
<li><router-link to="/gallery">/gallery (redirect to /gallery/image1)</router-link></li>
104+
<li><router-link :to="{ name: 'gallery' }">/gallery named link (redirect to /gallery/image1)</router-link></li>
86105
<li><router-link :to="{ name: 'image', params: {imageId: 'image2'} }">/gallery/image2</router-link></li>
87106
<li><router-link :to="{ name: 'image', params: {imageId: 'image1'} }">/gallery/image1</router-link></li>
107+
<li><router-link to="/redirect-gallery">/redirect-gallery (redirect to /gallery)</router-link></li>
108+
<li><router-link :to="{ name: 'redirect-gallery' }">/redirect-gallery named (redirect to /gallery)</router-link></li>
109+
<li><router-link to="/redirect-image">/redirect-image (redirect to /gallery/image1)</router-link></li>
110+
<li><router-link :to="{ name: 'redirect-image' }" >/redirect-image named (redirect to /gallery/image1)</router-link></li>
88111
</ul>
89112
<router-view class="view"></router-view>
90113
</div>

Diff for: src/components/link.js

+25-16
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,31 @@ export default {
3232
render (h: Function) {
3333
const router = this.$router
3434
const current = this.$route
35-
const { location, route, href } = router.resolve(this.to, current, this.append)
35+
const { location, route, href } = router.resolve(
36+
this.to,
37+
current,
38+
this.append
39+
)
3640

3741
const classes = {}
3842
const globalActiveClass = router.options.linkActiveClass
3943
const globalExactActiveClass = router.options.linkExactActiveClass
4044
// Support global empty active class
41-
const activeClassFallback = globalActiveClass == null
42-
? 'router-link-active'
43-
: globalActiveClass
44-
const exactActiveClassFallback = globalExactActiveClass == null
45-
? 'router-link-exact-active'
46-
: globalExactActiveClass
47-
const activeClass = this.activeClass == null
48-
? activeClassFallback
49-
: this.activeClass
50-
const exactActiveClass = this.exactActiveClass == null
51-
? exactActiveClassFallback
52-
: this.exactActiveClass
45+
const activeClassFallback =
46+
globalActiveClass == null ? 'router-link-active' : globalActiveClass
47+
const exactActiveClassFallback =
48+
globalExactActiveClass == null
49+
? 'router-link-exact-active'
50+
: globalExactActiveClass
51+
const activeClass =
52+
this.activeClass == null ? activeClassFallback : this.activeClass
53+
const exactActiveClass =
54+
this.exactActiveClass == null
55+
? exactActiveClassFallback
56+
: this.exactActiveClass
57+
// const compareTarget = location.path
58+
// ? createRoute(null, location, null, router)
59+
// : route
5360
const compareTarget = route.redirectedFrom
5461
? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)
5562
: route
@@ -71,7 +78,9 @@ export default {
7178

7279
const on = { click: guardEvent }
7380
if (Array.isArray(this.event)) {
74-
this.event.forEach(e => { on[e] = handler })
81+
this.event.forEach(e => {
82+
on[e] = handler
83+
})
7584
} else {
7685
on[this.event] = handler
7786
}
@@ -89,9 +98,9 @@ export default {
8998
if (a) {
9099
// in case the <a> is a static node
91100
a.isStatic = false
92-
const aData = a.data = extend({}, a.data)
101+
const aData = (a.data = extend({}, a.data))
93102
aData.on = on
94-
const aAttrs = a.data.attrs = extend({}, a.data.attrs)
103+
const aAttrs = (a.data.attrs = extend({}, a.data.attrs))
95104
aAttrs.href = href
96105
} else {
97106
// doesn't have <a> child, apply listener to self

0 commit comments

Comments
 (0)