Skip to content

Commit 4dec8d6

Browse files
committed
test for can-activate
1 parent 6cf5776 commit 4dec8d6

File tree

1 file changed

+153
-0
lines changed

1 file changed

+153
-0
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
var testUtils = require('../util')
2+
var test = testUtils.test
3+
var assertCalls = testUtils.assertCalls
4+
5+
describe('canActivate', function () {
6+
7+
it('sync allow', function (done) {
8+
test({
9+
a: {
10+
canActivate: function () {
11+
return true
12+
}
13+
}
14+
}, function (router, calls, emitter) {
15+
router.go('/a')
16+
expect(router.app.$el.textContent).toBe('A ')
17+
assertCalls(calls, ['a.canActivate'])
18+
done()
19+
})
20+
})
21+
22+
it('async allow', function (done) {
23+
test({
24+
a: {
25+
canActivate: function (transition) {
26+
setTimeout(function () {
27+
transition.next()
28+
}, wait)
29+
}
30+
}
31+
}, function (router, calls, emitter) {
32+
router.go('/a')
33+
expect(router.app.$el.textContent).toBe('')
34+
setTimeout(function () {
35+
assertCalls(calls, ['a.canActivate'])
36+
expect(router.app.$el.textContent).toBe('A ')
37+
done()
38+
}, wait)
39+
})
40+
})
41+
42+
it('sync reject', function (done) {
43+
test({
44+
a: {
45+
canActivate: function (transition) {
46+
return false
47+
}
48+
}
49+
}, function (router, calls, canActivate) {
50+
router.go('/a')
51+
assertCalls(calls, ['a.canActivate'])
52+
expect(router.app.$el.textContent).toBe('')
53+
expect(router.history.currentPath).toBe('/')
54+
done()
55+
})
56+
})
57+
58+
it('async reject', function (done) {
59+
test({
60+
a: {
61+
canActivate: function (transition) {
62+
setTimeout(function () {
63+
transition.abort()
64+
}, wait)
65+
}
66+
}
67+
}, function (router, calls, emitter) {
68+
router.go('/a')
69+
assertCalls(calls, ['a.canActivate'])
70+
expect(router.app.$el.textContent).toBe('')
71+
// path changes during validation phase
72+
expect(router.history.currentPath).toBe('/a')
73+
setTimeout(function () {
74+
// but gets reset when validation fails
75+
expect(router.app.$el.textContent).toBe('')
76+
expect(router.history.currentPath).toBe('/')
77+
done()
78+
}, wait)
79+
})
80+
})
81+
82+
it('promise allow', function (done) {
83+
test({
84+
a: {
85+
canActivate: function (transition) {
86+
return new Promise(function (resolve) {
87+
setTimeout(function () {
88+
resolve(true)
89+
}, wait)
90+
})
91+
}
92+
}
93+
}, function (router, calls, emitter) {
94+
router.go('/a')
95+
expect(router.app.$el.textContent).toBe('')
96+
setTimeout(function () {
97+
assertCalls(calls, ['a.canActivate'])
98+
expect(router.app.$el.textContent).toBe('A ')
99+
done()
100+
}, wait)
101+
})
102+
})
103+
104+
it('promise resolve false', function (done) {
105+
test({
106+
a: {
107+
canActivate: function (transition) {
108+
return new Promise(function (resolve, reject) {
109+
setTimeout(function () {
110+
resolve(false)
111+
}, wait)
112+
})
113+
}
114+
}
115+
}, function (router, calls, emitter) {
116+
router.go('/a')
117+
assertCalls(calls, ['a.canActivate'])
118+
expect(router.app.$el.textContent).toBe('')
119+
// path changes during validation phase
120+
expect(router.history.currentPath).toBe('/a')
121+
setTimeout(function () {
122+
// but gets reset when validation fails
123+
expect(router.app.$el.textContent).toBe('')
124+
expect(router.history.currentPath).toBe('/')
125+
done()
126+
}, wait)
127+
})
128+
})
129+
130+
it('promise reject', function (done) {
131+
test({
132+
a: {
133+
canActivate: function (transition) {
134+
return new Promise(function (resolve, reject) {
135+
setTimeout(reject, wait)
136+
})
137+
}
138+
}
139+
}, function (router, calls, emitter) {
140+
router.go('/a')
141+
assertCalls(calls, ['a.canActivate'])
142+
expect(router.app.$el.textContent).toBe('')
143+
// path changes during validation phase
144+
expect(router.history.currentPath).toBe('/a')
145+
setTimeout(function () {
146+
// but gets reset when validation fails
147+
expect(router.app.$el.textContent).toBe('')
148+
expect(router.history.currentPath).toBe('/')
149+
done()
150+
}, wait)
151+
})
152+
})
153+
})

0 commit comments

Comments
 (0)