@@ -5,8 +5,9 @@ var stateEvents = require("../../src/ng1/legacy/stateEvents.ts");
5
5
describe ( 'UI-Router v0.2.x $state events' , function ( ) {
6
6
var $injector , stateProvider ;
7
7
8
- beforeEach ( module ( 'ui.router.state.events' , function ( $stateEventsProvider ) {
8
+ beforeEach ( module ( 'ui.router.state.events' , function ( $stateEventsProvider , $exceptionHandlerProvider ) {
9
9
$stateEventsProvider . enable ( ) ;
10
+ decorateExceptionHandler ( $exceptionHandlerProvider )
10
11
} ) ) ;
11
12
12
13
var log , logEvents , logEnterExit ;
@@ -141,6 +142,28 @@ describe('UI-Router v0.2.x $state events', function () {
141
142
expect ( error ) . toBe ( err ) ;
142
143
} ) ) ;
143
144
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
+ } ) ) ;
144
167
145
168
it ( 'can be cancelled by preventDefault() in $stateNotFound' , inject ( function ( $state , $q , $rootScope ) {
146
169
initStateTo ( A ) ;
0 commit comments