Skip to content

Commit 2fcc920

Browse files
test(transition): Test that a transition (with resolve) doesn't succeed when superseded
1 parent b4621f3 commit 2fcc920

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

test/core/transitionSpec.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,29 @@ describe('transition', function () {
129129
.then(done);
130130
}));
131131

132+
// Test for #2972 and https://github.com/ui-router/react/issues/3
133+
it('should reject transitions that are superseded by a new transition', ((done) => {
134+
$state.defaultErrorHandler(function() {});
135+
router.stateRegistry.register({
136+
name: 'slowResolve',
137+
resolve: {
138+
foo: () => new Promise(resolve => setTimeout(resolve, 50))
139+
}
140+
});
141+
142+
let results = { success: 0, error: 0 };
143+
let success = () => results.success++;
144+
let error = () => results.error++;
145+
$transitions.onBefore({}, trans => { trans.promise.then(success, error) });
146+
147+
$state.go('slowResolve');
148+
149+
setTimeout(() => $state.go('slowResolve').transition.promise.then(() => {
150+
expect(results).toEqual({success: 1, error: 1});
151+
done();
152+
}), 20);
153+
}));
154+
132155
describe('.onStart()', function() {
133156
it('should fire matching events when transition starts', ((done) => {
134157
var t = null;

0 commit comments

Comments
 (0)