def testEnterScopeRecursivelyWithInactiveChildScopes(self): container = Container() container.addScope(Scope('foo')) container.addScope(Scope('bar', 'foo')) self.assertFalse(container.isScopeActive('foo')) container.enterScope('foo') self.assertTrue(container.isScopeActive('foo')) self.assertFalse(container.isScopeActive('bar')) self.assertFalse(container.has('a')) a = Object() container.set('a', a, 'foo') services = self._getField(container, '_scopedServices') self.assertTrue('a' in services['foo']) self.assertEqual(a, services['foo']['a']) self.assertTrue(container.has('a')) container.enterScope('foo') services = self._getField(container, '_scopedServices') self.assertFalse('a' in services) self.assertTrue(container.isScopeActive('foo')) self.assertFalse(container.isScopeActive('bar')) self.assertFalse(container.has('a'))
def testProcessIgnoresCrossScopeHierarchyReferenceIfNotStrict(self): container = ContainerBuilder() container.addScope(Scope('a')) container.addScope(Scope('b')) container.register('a').setScope('a').addArgument( Reference('b', ContainerInterface.EXCEPTION_ON_INVALID_REFERENCE, False)) container.register('b').setScope('b') self._process(container)
def testAddScope(self): c = Container() c.addScope(Scope('foo')) c.addScope(Scope('bar', 'foo')) self.assertEqual({ 'foo': 'container', 'bar': 'foo' }, self._getField(c, '_scopes')) self.assertEqual({ 'foo': ['bar'], 'bar': [] }, self._getField(c, '_scopeChildren'))
def testAddScopeDoesNotAllowExistingScope(self): """ @expectedException InvalidArgumentException """ try: container = Container() container.addScope(Scope('foo')) container.addScope(Scope('foo')) self.fail() except Exception as e: self.assertTrue(isinstance(e, InvalidArgumentException))
def testHasScope(self): c = Container() self.assertFalse(c.hasScope('foo')) c.addScope(Scope('foo')) self.assertTrue(c.hasScope('foo'))
def testLeaveScopeNotActive(self): container = Container() container.addScope(Scope('foo')) try: container.leaveScope('foo') self.fail( '->leaveScope() raise a LogicException if the scope is not active yet' ) except Exception as e: self.assertTrue( isinstance(e, LogicException), '->leaveScope() raise a LogicException if the scope is not active yet' ) self.assertEqual( 'The scope "foo" is not active.', e.getMessage(), '->leaveScope() raise a LogicException if the scope is not active yet' ) try: container.leaveScope('bar') self.fail( '->leaveScope() raise a LogicException if the scope does not exist' ) except Exception as e: self.assertTrue( isinstance(e, LogicException), '->leaveScope() raise a LogicException if the scope does not exist' ) self.assertEqual( 'The scope "bar" is not active.', e.getMessage(), '->leaveScope() raise a LogicException if the scope does not exist' )
def testReEnteringAScope(self): event = Event(); service1 = Service(); scope = Scope('scope'); container = Container(); container.addScope(scope); container.enterScope('scope'); container.set('service.listener', service1, 'scope'); dispatcher = ContainerAwareEventDispatcher(container); dispatcher.addListenerService('onEvent', ['service.listener', 'onEvent']); dispatcher.dispatch('onEvent', event); service2 = Service(); container.enterScope('scope'); container.set('service.listener', service2, 'scope'); dispatcher.dispatch('onEvent', event); container.leaveScope('scope'); dispatcher.dispatch('onEvent');
def test(scope): try: c = Container() c.addScope(Scope('foo', scope)) self.fail() except Exception as e: self.assertTrue(isinstance(e, InvalidArgumentException))
def testProcessDetectsCrossScopeHierarchyReference(self): """@expectedException RuntimeException """ try: container = ContainerBuilder() container.addScope(Scope('a')) container.addScope(Scope('b')) container.register('a').setScope('a').addArgument(Reference('b')) container.register('b').setScope('b') self._process(container) self.fail() except Exception as e: self.assertTrue(isinstance(e, RuntimeException))
def testSetAlsoSetsScopedService(self): c = Container() c.addScope(Scope('foo')) c.enterScope('foo') foo = Object() c.set('foo', foo, 'foo') services = self._getField(c, '_scopedServices') self.assertTrue('foo' in services['foo']) self.assertEqual(foo, services['foo']['foo'])
def testIsScopeActive(self): c = Container() self.assertFalse(c.isScopeActive('foo')) c.addScope(Scope('foo')) self.assertFalse(c.isScopeActive('foo')) c.enterScope('foo') self.assertTrue(c.isScopeActive('foo')) c.leaveScope('foo') self.assertFalse(c.isScopeActive('foo'))
def testSetDoesNotAllowInactiveScope(self): """ @expectedException RuntimeException """ try: c = Container() c.addScope(Scope('foo')) c.set('foo', Object(), 'foo') self.fail() except Exception as e: self.assertTrue(isinstance(e, RuntimeException))
def build(self, container): assert isinstance(container, ContainerBuilder) Bundle.build(self, container) container.addScope(Scope('request')) container.addCompilerPass(ConsoleRoutingResolverPass()) container.addCompilerPass(RegisterKernelListenersPass(), PassConfig.TYPE_AFTER_REMOVING) container.addCompilerPass(AddCacheWarmerPass()) container.addCompilerPass(AddCacheClearerPass()) if container.getParameter('kernel.debug'): container.addCompilerPass(CompilerDebugDumpPass(), PassConfig.TYPE_AFTER_REMOVING)
def testEnterLeaveCurrentScope(self): container = ProjectServiceContainer() container.addScope(Scope('foo')) container.enterScope('foo') scoped1 = container.get('scoped') scopedFoo1 = container.get('scoped_foo') container.enterScope('foo') scoped2 = container.get('scoped') scoped3 = container.get('scoped') scopedFoo2 = container.get('scoped_foo') container.leaveScope('foo') scoped4 = container.get('scoped') scopedFoo3 = container.get('scoped_foo') self.assertNotEqual(scoped1, scoped2) self.assertEqual(scoped2, scoped3) self.assertEqual(scoped1, scoped4) self.assertNotEqual(scopedFoo1, scopedFoo2) self.assertEqual(scopedFoo1, scopedFoo3)
def testTriggerAListenerServiceOutOfScope(self): """@expectedException InvalidArgumentException """ try: service = Service(); scope = Scope('scope'); container = Container(); container.addScope(scope); container.enterScope('scope'); container.set('service.listener', service, 'scope'); dispatcher = ContainerAwareEventDispatcher(container); dispatcher.addListenerService('onEvent', ['service.listener', 'onEvent']); container.leaveScope('scope'); dispatcher.dispatch('onEvent'); self.fail() except Exception as e: self.assertTrue(isinstance(e, InvalidArgumentException));