/** * @covers Sonata\AdminBundle\DependencyInjection\Compiler\ExtensionCompilerPass::process */ public function testProcess() { $container = $this->getContainer(); $this->extension->load(array($this->config), $container); $extensionsPass = new ExtensionCompilerPass(); $extensionsPass->process($container); $container->compile(); $this->assertTrue($container->hasDefinition('sonata_extension_publish')); $this->assertTrue($container->hasDefinition('sonata_extension_history')); $this->assertTrue($container->hasDefinition('sonata_extension_order')); $this->assertTrue($container->hasDefinition('sonata_extension_security')); $this->assertTrue($container->hasDefinition('sonata_post_admin')); $this->assertTrue($container->hasDefinition('sonata_article_admin')); $this->assertTrue($container->hasDefinition('sonata_news_admin')); $def = $container->get('sonata_post_admin'); $extensions = $def->getExtensions(); $this->assertCount(4, $extensions); $this->assertInstanceOf(get_class($this->securityExtension), $extensions[0]); $this->assertInstanceOf(get_class($this->publishExtension), $extensions[2]); $this->assertInstanceOf(get_class($this->historyExtension), $extensions[3]); $def = $container->get('sonata_article_admin'); $extensions = $def->getExtensions(); $this->assertCount(5, $extensions); $this->assertInstanceOf(get_class($this->securityExtension), $extensions[0]); $this->assertInstanceOf(get_class($this->publishExtension), $extensions[1]); $this->assertInstanceOf(get_class($this->orderExtension), $extensions[3]); $this->assertInstanceOf(get_class($this->filterExtension), $extensions[4]); $def = $container->get('sonata_news_admin'); $extensions = $def->getExtensions(); $this->assertCount(5, $extensions); $this->assertInstanceOf(get_class($this->securityExtension), $extensions[0]); $this->assertInstanceOf(get_class($this->orderExtension), $extensions[1]); $this->assertInstanceOf(get_class($this->historyExtension), $extensions[3]); $this->assertInstanceOf(get_class($this->filterExtension), $extensions[4]); }
public function testProcessThrowsExceptionIfTraitsAreNotAvailable() { if (!$this->hasTraits) { $this->setExpectedException('\\Symfony\\Component\\Config\\Definition\\Exception\\InvalidConfigurationException', 'PHP >= 5.4.0 is required to use traits.'); } $config = array('extensions' => array('sonata_extension_post' => array('uses' => array('Sonata\\AdminBundle\\Tests\\Fixtures\\DependencyInjection\\TimestampableTrait')))); $container = $this->getContainer(); $this->extension->load(array($config), $container); $extensionsPass = new ExtensionCompilerPass(); $extensionsPass->process($container); $container->compile(); }
/** * @covers Sonata\AdminBundle\DependencyInjection\Compiler\AddDependencyCallsCompilerPass::process */ public function testProcessGroupNameAsParameter() { $config = array('dashboard' => array('groups' => array('%sonata.admin.parameter.groupname%' => array()))); $container = $this->getContainer(); $container->setParameter('sonata.admin.parameter.groupname', 'resolved_group_name'); $this->extension->load(array($config), $container); $compilerPass = new AddDependencyCallsCompilerPass(); $compilerPass->process($container); $container->compile(); $adminGroups = $container->get('sonata.admin.pool')->getAdminGroups(); $this->assertArrayHasKey('resolved_group_name', $adminGroups); $this->assertFalse(array_key_exists('%sonata.admin.parameter.groupname%', $adminGroups)); }
public function testProcessMultipleOnTopOptionsInServiceDefinition2() { $container = $this->getContainer(); $config = $this->config; $config['dashboard']['groups'] = array(); $this->extension->load(array($config), $container); $compilerPass = new AddDependencyCallsCompilerPass(); $container->register('sonata_document_one_admin')->setClass('Sonata\\AdminBundle\\Tests\\DependencyInjection\\MockAdmin')->setArguments(array('', 'Sonata\\AdminBundle\\Tests\\DependencyInjection\\ReportOne', 'SonataAdminBundle:CRUD'))->addTag('sonata.admin', array('group' => 'sonata_document_group', 'manager_type' => 'orm', 'on_top' => false)); $container->register('sonata_document_two_admin')->setClass('Sonata\\AdminBundle\\Tests\\DependencyInjection\\MockAdmin')->setArguments(array('', 'Sonata\\AdminBundle\\Tests\\DependencyInjection\\ReportOne', 'SonataAdminBundle:CRUD'))->addTag('sonata.admin', array('group' => 'sonata_document_group', 'manager_type' => 'orm', 'on_top' => false)); try { $compilerPass->process($container); } catch (\RuntimeException $e) { $this->fail('An expected exception has been raised.'); } }
public function testApplyTemplatesConfiguration() { $container = $this->getContainer(); $this->extension->load(array($this->getConfig()), $container); $compilerPass = new AddDependencyCallsCompilerPass(); $compilerPass->process($container); $callsPostAdmin = $container->getDefinition('sonata_post_admin')->getMethodCalls(); foreach ($callsPostAdmin as $call) { list($name, $parameters) = $call; switch ($name) { case 'setTemplates': $this->assertSame('foobar.twig.html', $parameters[0]['user_block']); $this->assertSame('SonataAdminBundle:Pager:results.html.twig', $parameters[0]['pager_results']); break; case 'setLabel': $this->assertSame('-', $parameters[0]); break; case 'setPagerType': $this->assertSame('default', $parameters[0]); break; } } $callsNewsAdmin = $container->getDefinition('sonata_news_admin')->getMethodCalls(); foreach ($callsNewsAdmin as $call) { list($name, $parameters) = $call; switch ($name) { case 'setTemplates': $this->assertSame('foo.twig.html', $parameters[0]['user_block']); $this->assertSame('SonataAdminBundle:Pager:simple_pager_results.html.twig', $parameters[0]['pager_results']); break; case 'setLabel': $this->assertSame('Foo', $parameters[0]); break; case 'setPagerType': $this->assertSame('simple', $parameters[0]); break; } } }