Skip to content

Commit 5638a65

Browse files
test(state): fire $stateChangeError if onEnter/onExit throws.
(cherry picked from commit a5756c3)
1 parent 79d501e commit 5638a65

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

test/ng1/stateEventsSpec.js

+24-1
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ var stateEvents = require("../../src/ng1/legacy/stateEvents.ts");
55
describe('UI-Router v0.2.x $state events', function () {
66
var $injector, stateProvider;
77

8-
beforeEach(module('ui.router.state.events', function($stateEventsProvider) {
8+
beforeEach(module('ui.router.state.events', function($stateEventsProvider, $exceptionHandlerProvider) {
99
$stateEventsProvider.enable();
10+
decorateExceptionHandler($exceptionHandlerProvider)
1011
}));
1112

1213
var log, logEvents, logEnterExit;
@@ -141,6 +142,28 @@ describe('UI-Router v0.2.x $state events', function () {
141142
expect(error).toBe(err);
142143
}));
143144

145+
it('sends $stateChangeError for exceptions in onEnter', inject(function ($state, $q, $rootScope, $exceptionHandler) {
146+
$exceptionHandler.disabled = true;
147+
$state.defaultErrorHandler(function() {});
148+
149+
stateProvider.state('onEnterFail', {
150+
onEnter: function() {
151+
throw new Error('negative onEnter');
152+
}
153+
});
154+
155+
var called;
156+
$rootScope.$on('$stateChangeError', function (ev, to, toParams, from, fromParams, options) {
157+
called = true;
158+
});
159+
160+
initStateTo(A);
161+
$state.transitionTo('onEnterFail');
162+
$q.flush();
163+
164+
expect(called).toBeTruthy();
165+
expect($state.current.name).toEqual(A.name);
166+
}));
144167

145168
it('can be cancelled by preventDefault() in $stateNotFound', inject(function ($state, $q, $rootScope) {
146169
initStateTo(A);

0 commit comments

Comments
 (0)