@@ -261,6 +261,38 @@ public function testEnterLeaveScopeWithChildScopes()
261
261
$ this ->assertFalse ($ container ->has ('a ' ));
262
262
}
263
263
264
+ public function testEnterScopeRecursivelyWithInactiveChildScopes ()
265
+ {
266
+ $ container = new Container ();
267
+ $ container ->addScope (new Scope ('foo ' ));
268
+ $ container ->addScope (new Scope ('bar ' , 'foo ' ));
269
+
270
+ $ this ->assertFalse ($ container ->isScopeActive ('foo ' ));
271
+
272
+ $ container ->enterScope ('foo ' );
273
+
274
+ $ this ->assertTrue ($ container ->isScopeActive ('foo ' ));
275
+ $ this ->assertFalse ($ container ->isScopeActive ('bar ' ));
276
+ $ this ->assertFalse ($ container ->has ('a ' ));
277
+
278
+ $ a = new \stdClass ();
279
+ $ container ->set ('a ' , $ a , 'foo ' );
280
+
281
+ $ services = $ this ->getField ($ container , 'scopedServices ' );
282
+ $ this ->assertTrue (isset ($ services ['foo ' ]['a ' ]));
283
+ $ this ->assertSame ($ a , $ services ['foo ' ]['a ' ]);
284
+
285
+ $ this ->assertTrue ($ container ->has ('a ' ));
286
+ $ container ->enterScope ('foo ' );
287
+
288
+ $ services = $ this ->getField ($ container , 'scopedServices ' );
289
+ $ this ->assertFalse (isset ($ services ['a ' ]));
290
+
291
+ $ this ->assertTrue ($ container ->isScopeActive ('foo ' ));
292
+ $ this ->assertFalse ($ container ->isScopeActive ('bar ' ));
293
+ $ this ->assertFalse ($ container ->has ('a ' ));
294
+ }
295
+
264
296
public function testLeaveScopeNotActive ()
265
297
{
266
298
$ container = new Container ();
0 commit comments