@@ -54,7 +54,8 @@ beforeEach(function () {
54
54
O : { resolve : { _O : function ( _O2 ) { return _O2 + "O" ; } , _O2 : function ( _O ) { return _O + "O2" ; } } } ,
55
55
P : { resolve : { $state : function ( $state ) { return $state } } ,
56
56
Q : { resolve : { _Q : function ( $state ) { counts . _Q ++ ; vals . _Q = $state ; return "foo" ; } } }
57
- }
57
+ } ,
58
+ PAnnotated : { resolve : { $state : [ '$state' , function ( $state ) { return $state } ] } }
58
59
} ;
59
60
60
61
var stateProps = [ "resolve" , "resolvePolicy" ] ;
@@ -95,6 +96,44 @@ describe('Resolvables system:', function () {
95
96
asyncCount = 0 ;
96
97
} ) ) ;
97
98
99
+ describe ( 'strictDi support' , function ( ) {
100
+ let originalStrictDi : boolean ;
101
+ let supportsStrictDi = false ;
102
+
103
+ beforeEach ( inject ( function ( $injector ) {
104
+ // not all angular versions support strictDi mode.
105
+ // here, we detect the feature
106
+ try {
107
+ $injector . annotate ( ( ) => { } , true ) ;
108
+ } catch ( e ) {
109
+ supportsStrictDi = true ;
110
+ }
111
+
112
+ if ( supportsStrictDi ) {
113
+ originalStrictDi = $injector . strictDi ;
114
+ $injector . strictDi = true ;
115
+ }
116
+ } ) ) ;
117
+
118
+ if ( supportsStrictDi ) {
119
+ afterEach ( inject ( function ( $injector ) {
120
+ $injector . strictDi = originalStrictDi ;
121
+ } ) ) ;
122
+
123
+ it ( 'should throw when creating a resolvable with an unannotated fn and strictDi mode on' , inject ( function ( $injector ) {
124
+ expect ( ( ) => {
125
+ makePath ( [ "P" ] ) ;
126
+ } ) . toThrowError ( / s t r i c t d i / ) ;
127
+ } ) ;
128
+
129
+ it ( 'should not throw when creating a resolvable with an annotated fn and strictDi mode on' , inject ( function ( $injector ) {
130
+ expect ( ( ) => {
131
+ makePath ( [ "PAnnotated" ] ) ;
132
+ } ) . not . toThrowError ( / s t r i c t d i / ) ;
133
+ } ) ;
134
+ }
135
+ } ) ;
136
+
98
137
describe ( 'ResolveContext.resolvePathElement()' , function ( ) {
99
138
it ( 'should resolve all resolves in a PathElement' , inject ( function ( $q ) {
100
139
let path = makePath ( [ "A" ] ) ;
0 commit comments