@@ -11,12 +11,13 @@ var html5Compat = require('./util/testUtilsNg1').html5Compat;
11
11
12
12
describe ( 'state' , function ( ) {
13
13
14
- var $injector , $stateProvider , locationProvider , templateParams , template , ctrlName , errors ;
14
+ var $uiRouter , $ injector, $stateProvider , locationProvider , templateParams , template , ctrlName , errors ;
15
15
16
- beforeEach ( module ( 'ui.router' , function ( $locationProvider ) {
16
+ beforeEach ( module ( 'ui.router' , function ( $locationProvider , $uiRouterProvider ) {
17
17
errors = [ ] ;
18
18
locationProvider = $locationProvider ;
19
19
$locationProvider . html5Mode ( false ) ;
20
+ $uiRouter = $uiRouterProvider . router ;
20
21
} ) ) ;
21
22
22
23
var log , logEvents , logEnterExit ;
@@ -635,6 +636,32 @@ describe('state', function () {
635
636
'A.onEnter;' ) ;
636
637
} ) ) ;
637
638
639
+ // test for #3081
640
+ it ( 'injects resolve values from the exited state into onExit' , ( function ( done ) {
641
+ const registry = $uiRouter . stateRegistry ;
642
+ registry . register ( {
643
+ name : 'design' ,
644
+ url : '/design' ,
645
+ resolve : { cc : function ( ) { return 'cc resolve' ; } } ,
646
+ onExit : function ( cc , $state$ , $transition$ ) {
647
+ expect ( $transition$ . to ( ) . name ) . toBe ( 'A' ) ;
648
+ expect ( $transition$ . from ( ) . name ) . toBe ( 'design' ) ;
649
+
650
+ expect ( $state$ . self ) . toBe ( registry . get ( 'design' ) ) ;
651
+
652
+ expect ( cc ) . toBe ( 'cc resolve' ) ;
653
+
654
+ done ( ) ;
655
+ }
656
+ } ) ;
657
+
658
+ $state . go ( "design" ) ;
659
+ $q . flush ( ) ;
660
+
661
+ $state . go ( "A" ) ;
662
+ $q . flush ( ) ;
663
+ } ) ) ;
664
+
638
665
it ( 'doesn\'t transition to parent state when child has no URL' , inject ( function ( $state , $q ) {
639
666
$state . transitionTo ( 'about.sidebar' ) ; $q . flush ( ) ;
640
667
expect ( $state . current . name ) . toEqual ( 'about.sidebar' ) ;
0 commit comments