@@ -209,6 +209,83 @@ describe('setProfiler', () => {
209209 expect ( ( ( myServiceProviderConfiguredEvent ! . providerRecord ) ?. provider as ClassProvider ) . multi )
210210 . toBeTrue ( ) ;
211211 } ) ;
212+
213+ it ( 'should emit correct DI events when service providers are configured with providedIn' , ( ) => {
214+ @Injectable ( { providedIn : 'root' } )
215+ class RootService {
216+ }
217+
218+ @Injectable ( { providedIn : 'platform' } )
219+ class PlatformService {
220+ }
221+
222+ const providedInRootInjectionToken = new InjectionToken (
223+ 'providedInRootInjectionToken' , { providedIn : 'root' , factory : ( ) => 'hello world' } ) ;
224+
225+ const providedInPlatformToken = new InjectionToken (
226+ 'providedInPlatformToken' , { providedIn : 'platform' , factory : ( ) => 'hello world' } ) ;
227+
228+ @Component ( {
229+ selector : 'my-comp' ,
230+ template : 'hello world' ,
231+ } )
232+ class MyComponent {
233+ rootService = inject ( RootService ) ;
234+ platformService = inject ( PlatformService ) ;
235+ fromRoot = inject ( providedInRootInjectionToken ) ;
236+ fromPlatform = inject ( providedInPlatformToken ) ;
237+ }
238+
239+ TestBed . configureTestingModule ( { declarations : [ MyComponent ] } ) ;
240+ TestBed . createComponent ( MyComponent ) ;
241+
242+ // MyService should have been configured
243+ const rootServiceProviderConfiguredEvent = searchForProfilerEvent < ProviderConfiguredEvent > (
244+ providerConfiguredEvents , ( event ) => event . providerRecord . token === RootService ) ;
245+
246+ expect ( rootServiceProviderConfiguredEvent ) . toBeTruthy ( ) ;
247+ expect ( rootServiceProviderConfiguredEvent ! . context ) . toBeTruthy ( ) ;
248+ expect ( rootServiceProviderConfiguredEvent ! . context ! . injector ) . toBeInstanceOf ( R3Injector ) ;
249+ expect ( ( rootServiceProviderConfiguredEvent ! . context ! . injector as R3Injector ) . scopes . has ( 'root' ) )
250+ . toBeTrue ( ) ;
251+
252+ const platformServiceProviderConfiguredEvent = searchForProfilerEvent < ProviderConfiguredEvent > (
253+ providerConfiguredEvents , ( event ) => event . providerRecord . token === PlatformService ) ;
254+ expect ( platformServiceProviderConfiguredEvent ) . toBeTruthy ( ) ;
255+ expect ( platformServiceProviderConfiguredEvent ! . context ) . toBeTruthy ( ) ;
256+ expect ( platformServiceProviderConfiguredEvent ! . context ! . injector ) . toBeInstanceOf ( R3Injector ) ;
257+ expect ( ( platformServiceProviderConfiguredEvent ! . context ! . injector as R3Injector )
258+ . scopes . has ( 'platform' ) )
259+ . toBeTrue ( ) ;
260+
261+ const providedInRootInjectionTokenProviderConfiguredEvent =
262+ searchForProfilerEvent < ProviderConfiguredEvent > (
263+ providerConfiguredEvents ,
264+ ( event ) => event . providerRecord . token === providedInRootInjectionToken ) ;
265+ expect ( providedInRootInjectionTokenProviderConfiguredEvent ) . toBeTruthy ( ) ;
266+ expect ( providedInRootInjectionTokenProviderConfiguredEvent ! . context ) . toBeTruthy ( ) ;
267+ expect ( providedInRootInjectionTokenProviderConfiguredEvent ! . context ! . injector )
268+ . toBeInstanceOf ( R3Injector ) ;
269+ expect ( ( providedInRootInjectionTokenProviderConfiguredEvent ! . context ! . injector as R3Injector )
270+ . scopes . has ( 'root' ) )
271+ . toBeTrue ( ) ;
272+ expect ( providedInRootInjectionTokenProviderConfiguredEvent ! . providerRecord . token )
273+ . toBe ( providedInRootInjectionToken ) ;
274+
275+ const providedInPlatformTokenProviderConfiguredEvent =
276+ searchForProfilerEvent < ProviderConfiguredEvent > (
277+ providerConfiguredEvents ,
278+ ( event ) => event . providerRecord . token === providedInPlatformToken ) ;
279+ expect ( providedInPlatformTokenProviderConfiguredEvent ) . toBeTruthy ( ) ;
280+ expect ( providedInPlatformTokenProviderConfiguredEvent ! . context ) . toBeTruthy ( ) ;
281+ expect ( providedInPlatformTokenProviderConfiguredEvent ! . context ! . injector )
282+ . toBeInstanceOf ( R3Injector ) ;
283+ expect ( ( providedInPlatformTokenProviderConfiguredEvent ! . context ! . injector as R3Injector )
284+ . scopes . has ( 'platform' ) )
285+ . toBeTrue ( ) ;
286+ expect ( providedInPlatformTokenProviderConfiguredEvent ! . providerRecord . token )
287+ . toBe ( providedInPlatformToken ) ;
288+ } ) ;
212289} ) ;
213290
214291describe ( 'getInjectorMetadata' , ( ) => {
0 commit comments