Skip to content

Commit 6115181

Browse files
committed
tests for can-reuse
1 parent cfba074 commit 6115181

File tree

2 files changed

+118
-9
lines changed

2 files changed

+118
-9
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
var testUtils = require('../util')
2+
var test = testUtils.test
3+
var assertCalls = testUtils.assertCalls
4+
5+
describe('canReuse', function () {
6+
7+
it('allow', function (done) {
8+
test({
9+
a: {
10+
canReuse: true,
11+
activate: function (transition) {
12+
// just for logging calls
13+
transition.next()
14+
}
15+
}
16+
}, function (router, calls) {
17+
router.go('/a/b')
18+
expect(router.app.$el.textContent).toBe('A B')
19+
assertCalls(calls, ['a.activate'])
20+
var A = router.app.$children[0]
21+
router.go('/a/e')
22+
assertCalls(calls, ['a.activate', 'a.canReuse'])
23+
expect(router.app.$el.textContent).toBe('A E')
24+
expect(router.app.$children[0]).toBe(A)
25+
done()
26+
})
27+
})
28+
29+
it('deny', function (done) {
30+
test({
31+
a: {
32+
canReuse: false,
33+
activate: function (transition) {
34+
// just for logging calls
35+
transition.next()
36+
}
37+
}
38+
}, function (router, calls) {
39+
router.go('/a/b')
40+
expect(router.app.$el.textContent).toBe('A B')
41+
assertCalls(calls, ['a.activate'])
42+
var A = router.app.$children[0]
43+
router.go('/a/e')
44+
assertCalls(calls, ['a.activate', 'a.canReuse', 'a.activate'])
45+
expect(router.app.$el.textContent).toBe('A E')
46+
expect(router.app.$children[0]).not.toBe(A)
47+
done()
48+
})
49+
})
50+
51+
it('function allow', function (done) {
52+
test({
53+
a: {
54+
canReuse: function () {
55+
return true
56+
},
57+
activate: function (transition) {
58+
// just for logging calls
59+
transition.next()
60+
}
61+
}
62+
}, function (router, calls) {
63+
router.go('/a/b')
64+
expect(router.app.$el.textContent).toBe('A B')
65+
assertCalls(calls, ['a.activate'])
66+
var A = router.app.$children[0]
67+
router.go('/a/e')
68+
assertCalls(calls, ['a.activate', 'a.canReuse'])
69+
expect(router.app.$el.textContent).toBe('A E')
70+
expect(router.app.$children[0]).toBe(A)
71+
done()
72+
})
73+
})
74+
75+
it('function deny', function (done) {
76+
test({
77+
a: {
78+
canReuse: function () {
79+
return false
80+
},
81+
activate: function (transition) {
82+
// just for logging calls
83+
transition.next()
84+
}
85+
}
86+
}, function (router, calls) {
87+
router.go('/a/b')
88+
expect(router.app.$el.textContent).toBe('A B')
89+
assertCalls(calls, ['a.activate'])
90+
var A = router.app.$children[0]
91+
router.go('/a/e')
92+
assertCalls(calls, ['a.activate', 'a.canReuse', 'a.activate'])
93+
expect(router.app.$el.textContent).toBe('A E')
94+
expect(router.app.$children[0]).not.toBe(A)
95+
done()
96+
})
97+
})
98+
})

test/unit/specs/util.js

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ exports.test = function (configs, cb) {
2626
Object.keys(config).forEach(function (hook) {
2727
var fn = config[hook]
2828
config[hook] = function (transition) {
29-
var res = fn(transition)
29+
var res = typeof fn === 'function'
30+
? fn(transition)
31+
: fn
3032
var event = route + '.' + hook
3133
calls.push(event)
3234
emitter.emit(event)
@@ -41,10 +43,17 @@ exports.test = function (configs, cb) {
4143
route: configs.a
4244
},
4345
subRoutes: {
44-
'/b': { component: {
45-
template: 'B',
46-
route: configs.b
47-
}}
46+
'/b': {
47+
component: {
48+
template: 'B',
49+
route: configs.b
50+
}
51+
},
52+
'/e': {
53+
component: {
54+
template: 'E'
55+
}
56+
}
4857
}
4958
},
5059
'/c': {
@@ -53,10 +62,12 @@ exports.test = function (configs, cb) {
5362
route: configs.c
5463
},
5564
subRoutes: {
56-
'/d': { component: {
57-
template: 'D',
58-
route: configs.d
59-
}}
65+
'/d': {
66+
component: {
67+
template: 'D',
68+
route: configs.d
69+
}
70+
}
6071
}
6172
}
6273
})

0 commit comments

Comments
 (0)