protected function setUp() { $bundle = new TestBundle(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle->getName() => get_class($bundle)]); $this->container = new ContainerBuilder(); $this->container->setParameter('kernel.environment', 'test'); }
/** * {@inheritdoc} */ public function isFresh($timestamp) { if ($this->isFreshTimestamp !== $timestamp) { $this->isFreshTimestamp = $timestamp; $this->isFresh = true; $bundles = CumulativeResourceManager::getInstance()->getBundles(); $appRootDir = CumulativeResourceManager::getInstance()->getAppRootDir(); foreach ($bundles as $bundleName => $bundleClass) { $reflection = new \ReflectionClass($bundleClass); $bundleDir = dirname($reflection->getFilename()); $bundleAppDir = ''; /** * This case needs for tests(without app root directory). */ if (is_dir($appRootDir)) { $bundleAppDir = $appRootDir . '/Resources/' . $bundleName; } /** @var CumulativeResourceLoader $loader */ foreach ($this->resourceLoaders as $loader) { if (!$loader->isResourceFresh($bundleClass, $bundleDir, $bundleAppDir, $this, $timestamp)) { $this->isFresh = false; break; } } if (!$this->isFresh) { break; } } } return $this->isFresh; }
public function testGetAndSetBundles() { CumulativeResourceManager::getInstance()->clear(); $this->assertCount(0, CumulativeResourceManager::getInstance()->getBundles()); $bundle = new TestBundle1(); CumulativeResourceManager::getInstance()->setBundles(['TestBundle1' => get_class($bundle)]); $this->assertEquals(['TestBundle1' => get_class($bundle)], CumulativeResourceManager::getInstance()->getBundles()); }
/** * @dataProvider loadDataProvider */ public function testLoad(array $bundles, array $configs, array $expectedConfiguration) { $container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerBuilder'); CumulativeResourceManager::getInstance()->setBundles($bundles); $definition = $this->getMock('Symfony\\Component\\DependencyInjection\\Definition'); $definition->expects($this->once())->method('replaceArgument')->with(0, $expectedConfiguration); $container->expects($this->once())->method('getDefinition')->with('oro_chart.config_provider')->will($this->returnValue($definition)); $this->target->load($configs, $container); }
protected function createEmptyConfiguration() { CumulativeResourceManager::getInstance()->clear(); $this->configuration = new ContainerBuilder(); $loader = new OroConfigExtension(); $config = $this->getEmptyConfig(); $loader->load(array($config), $this->configuration); $this->assertTrue($this->configuration instanceof ContainerBuilder); }
/** * @dataProvider loadConfigurationDataProvider */ public function testLoadConfiguration(array $configs, array $bundles, array $expectedConfiguration) { CumulativeResourceManager::getInstance()->clear()->setBundles($bundles); $container = new ContainerBuilder(); $this->extension->load($configs, $container); $this->assertTrue($container->hasDefinition('oro_help.model.help_link_provider')); $linkProvider = $container->getDefinition('oro_help.model.help_link_provider'); $this->assertContains($linkProvider->getMethodCalls()[1], array(array('setConfiguration', array($expectedConfiguration)))); }
/** * @dataProvider loadDataProvider */ public function testLoad(array $configs, array $expectedBundles, array $expectedConfiguration) { CumulativeResourceManager::getInstance()->clear()->setBundles($expectedBundles); $extension = new OroAsseticExtension(); $container = new ContainerBuilder(); $container->setParameter('kernel.bundles', $expectedBundles); $extension->load($configs, $container); $this->assertEquals($expectedConfiguration, $container->getParameter('oro_assetic.raw_configuration')); $this->assertNotNull($container->getDefinition('oro_assetic.configuration')); $this->assertNotNull($container->getDefinition('oro_assetic.twig.extension')); }
public function testIsFreshResource1ForBundle2IsNotUpToDate() { $bundle1 = new TestBundle1(); $bundle2 = new TestBundle2(); $resourceLoader1 = $this->getMock('Oro\\Component\\Config\\Loader\\CumulativeResourceLoader'); $resourceLoader2 = $this->getMock('Oro\\Component\\Config\\Loader\\CumulativeResourceLoader'); $resource = new CumulativeResource('test', new CumulativeResourceLoaderCollection([$resourceLoader1, $resourceLoader2])); $resourceLoader1->expects($this->exactly(2))->method('isResourceFresh')->will($this->onConsecutiveCalls(true, false)); $resourceLoader2->expects($this->once())->method('isResourceFresh')->will($this->onConsecutiveCalls(true)); CumulativeResourceManager::getInstance()->clear()->setBundles(['TestBundle1' => get_class($bundle1), 'TestBundle2' => get_class($bundle2)]); $this->assertFalse($resource->isFresh(100)); }
/** * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function testLoad() { $bundle1 = new BarBundle(); $bundle2 = new FooBundle(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $container = new ContainerBuilder(); $extensionConfig = [['placeholders' => ['test_block' => ['items' => ['item1' => ['remove' => true], 'item4' => ['order' => 15], 'item7' => ['order' => -5], 'new_empty_item' => ['order' => 100], 'new_item' => ['order' => 5]]]], 'placeholder_items' => ['new_item' => ['template' => 'test_template']]]]; $extension = new OroUIExtension(); $extension->load($extensionConfig, $container); $palaceholders = $container->getParameter('oro_ui.placeholders'); $this->assertEquals(['placeholders' => ['test_block' => ['items' => ['item6', 'item7', 'item2', 'item3', 'new_item', 'item4', 'item5', 'new_empty_item']], 'test_merge_block' => ['items' => ['item1']], 'empty_block' => ['items' => []]], 'items' => ['item1' => ['template' => 'TestBundle::test.html.twig'], 'item2' => ['action' => 'TestBundle:Test:test2'], 'item3' => ['action' => 'TestBundle:Test:test3'], 'item4' => ['action' => 'TestBundle:Test:test4'], 'item5' => ['action' => 'TestBundle:Test:test5'], 'item6' => ['action' => 'TestBundle:Test:test6'], 'item7' => ['action' => 'TestBundle:Test:test7'], 'new_item' => ['template' => 'test_template']]], $palaceholders); }
/** * @dataProvider loadDataProvider */ public function testLoad(array $bundles, array $configs, array $expectedConfiguration) { $container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerBuilder'); CumulativeResourceManager::getInstance()->setBundles($bundles); $definition = $this->getMock('Symfony\\Component\\DependencyInjection\\Definition'); $definition->expects($this->once())->method('replaceArgument')->with(0, $this->callback(function ($actualConfiguration) use($expectedConfiguration) { $this->assertSame($expectedConfiguration, $actualConfiguration); return true; })); $container->expects($this->once())->method('getDefinition')->will($this->returnValue($definition)); $this->target->load($configs, $container); }
/** * @dataProvider loadDataProvider */ public function testLoad(array $configs, array $expectedThemeSettings) { $bundle1 = new Fixtures\FooBundle\FooBundle(); $bundle2 = new Fixtures\BarBundle\BarBundle(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $extension = new OroSidebarExtension(); $container = new ContainerBuilder(); $extension->load($configs, $container); $this->assertEquals($expectedThemeSettings, $container->getParameter(OroSidebarExtension::WIDGETS_SETTINGS_PARAMETER)); $this->assertNotNull($container->getDefinition('oro_sidebar.widget_definition.registry')); $this->assertNotNull($container->getDefinition('oro_sidebar.twig.extension')); }
public function testProcess() { $bundle1 = new TestBundle1(); $bundle2 = new TestBundle2(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $fieldTypeHelperDef = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Definition')->disableOriginalConstructor()->getMock(); $container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerBuilder'); $container->expects($this->once())->method('hasDefinition')->with(EntityExtendPass::FIELD_TYPE_HELPER_SERVICE_ID)->will($this->returnValue(true)); $container->expects($this->once())->method('getDefinition')->with(EntityExtendPass::FIELD_TYPE_HELPER_SERVICE_ID)->will($this->returnValue($fieldTypeHelperDef)); $fieldTypeHelperDef->expects($this->once())->method('replaceArgument')->with(0, ['enum' => 'manyToOne', 'multiEnum' => 'manyToMany']); $compiler = new EntityExtendPass(); $compiler->process($container); }
/** * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function testLoadApiConfiguration() { $bundle1 = new Fixtures\BarBundle\BarBundle(); $bundle2 = new Fixtures\BazBundle\BazBundle(); $bundle3 = new Fixtures\FooBundle\FooBundle(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2), $bundle3->getName() => get_class($bundle3)]); $extension = new OroApiExtension(); $container = new ContainerBuilder(); $extension->load([], $container); $this->assertNotNull($container->getDefinition('oro_api.config_bag'), 'Expected oro_api.config_bag service'); $this->assertNotNull($container->getDefinition('oro_api.entity_exclusion_provider.config'), 'Expected oro_api.entity_exclusion_provider.config service'); $this->assertEquals(['entities' => ['Test\\Entity1' => [], 'Test\\Entity2' => [], 'Test\\Entity3' => [], 'Test\\Entity4' => ['definition' => ['fields' => ['field1' => null, 'field2' => ['exclude' => true], 'field3' => ['exclude' => true]], 'filters' => ['fields' => ['field1' => null, 'field2' => ['data_type' => 'string', 'exclude' => true], 'field3' => ['exclude' => true]]], 'sorters' => ['fields' => ['field1' => null, 'field2' => ['exclude' => true]]]]], 'Test\\Entity5' => ['definition' => ['fields' => ['field1' => null]]], 'Test\\Entity6' => ['definition' => ['fields' => ['field1' => null]]], 'Test\\Entity10' => [], 'Test\\Entity11' => []]], $container->getDefinition('oro_api.config_bag')->getArgument(0)); $this->assertEquals([['entity' => 'Test\\Entity1'], ['entity' => 'Test\\Entity2'], ['entity' => 'Test\\Entity3']], $container->getDefinition('oro_api.entity_exclusion_provider.config')->getArgument(1)); }
/** * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function testLoad() { $bundle1 = new TestBundle1(); $bundle2 = new TestBundle2(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $container = new ContainerBuilder(); $extensionConfig = []; $extension = new OroEntityExtension(); $extension->load($extensionConfig, $container); $exclusions = $container->getParameter('oro_entity.exclusions'); $this->assertEquals([['entity' => 'Test\\Entity\\Address', 'field' => 'regionText'], ['entity' => 'Test\\Entity\\Product', 'field' => 'code']], $exclusions); $virtualFields = $container->getParameter('oro_entity.virtual_fields'); $this->assertEquals(['Test\\Entity\\Address' => ['region_name' => ['query' => ['select' => ['expr' => 'COALESCE(entity.regionText, region.name)', 'return_type' => 'string'], 'join' => ['left' => [['join' => 'entity.region', 'alias' => 'region']]]]]], 'Test\\Entity\\Product' => ['groups' => ['query' => ['select' => ['expr' => 'target.name', 'return_type' => 'enum', 'filter_by_id' => true, 'label' => 'test.product.groups.label'], 'join' => ['left' => [['join' => 'entity.groups', 'alias' => 'target']]]]]]], $virtualFields); }
/** * Adds a resource objects to the container. * These objects will be used to monitor whether resources are up-to-date or not. * * @param ContainerBuilder $container * @throws \RuntimeException if the container builder was not specified */ public function registerResources(ContainerBuilder $container) { $bundles = CumulativeResourceManager::getInstance()->getBundles(); $resource = new CumulativeResource($this->name, $this->resourceLoaders); /** @var CumulativeResourceLoader $resourceLoader */ foreach ($this->resourceLoaders as $resourceLoader) { foreach ($bundles as $bundleClass) { $reflection = new \ReflectionClass($bundleClass); $bundleDir = dirname($reflection->getFilename()); $resourceLoader->registerFoundResource($bundleClass, $bundleDir, $resource); } } $container->addResource($resource); }
public function testProcess() { $bundle = new TestBundle(); $bundles = array($bundle->getName() => get_class($bundle)); CumulativeResourceManager::getInstance()->clear()->setBundles($bundles); $this->container->expects($this->once())->method('getExtensions')->will($this->returnValue(['test_bundle' => null])); $this->container->expects($this->once())->method('getExtensionConfig')->with('test_bundle')->will($this->returnValue([['settings' => [SettingsBuilder::RESOLVED_KEY => true, 'some_field' => ['value' => 'some_val', 'scope' => 'app'], 'some_another_field' => ['value' => 'some_another_val', 'scope' => 'app']]]])); $bagServiceDef = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Definition')->disableOriginalConstructor()->getMock(); $providerServiceDef = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Definition')->disableOriginalConstructor()->getMock(); $this->container->expects($this->once())->method('findTaggedServiceIds')->with(SystemConfigurationPass::CONFIG_PROVIDER_TAG_NAME)->will($this->returnValue(['provider_service' => [['scope' => 'app']]])); $this->container->expects($this->exactly(2))->method('getDefinition')->will($this->returnValueMap([[SystemConfigurationPass::CONFIG_DEFINITION_BAG_SERVICE, $bagServiceDef], ['provider_service', $providerServiceDef]])); $bagServiceDef->expects($this->once())->method('replaceArgument')->with($this->equalTo(0), $this->isType('array')); $providerServiceDef->expects($this->once())->method('replaceArgument')->with($this->equalTo(0), $this->isType('array')); $this->compiler->process($this->container); }
public function testLoad() { CumulativeResourceManager::getInstance()->clear(); $extension = new OroAttachmentExtension(); $configs = array(); $isCalled = false; $container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerBuilder'); $container->expects($this->any())->method('setParameter')->will($this->returnCallback(function ($name, $value) use(&$isCalled) { if ($name == 'oro_attachment.files' && is_array($value)) { $isCalled = true; } })); $extension->load($configs, $container); $this->assertTrue($isCalled); }
/** * Adds a resource objects to the container. * These objects will be used to monitor whether resources are up-to-date or not. * * @param ContainerBuilder $container * * @throws \RuntimeException if the container builder was not specified */ public function registerResources(ContainerBuilder $container) { $bundles = CumulativeResourceManager::getInstance()->getBundles(); $appRootDir = CumulativeResourceManager::getInstance()->getAppRootDir(); $resource = new CumulativeResource($this->name, $this->resourceLoaders); /** @var CumulativeResourceLoader $resourceLoader */ foreach ($this->resourceLoaders as $resourceLoader) { foreach ($bundles as $bundleName => $bundleClass) { $reflection = new \ReflectionClass($bundleClass); $bundleDir = dirname($reflection->getFilename()); $bundleAppDir = !empty($appRootDir) && is_dir($appRootDir) ? $appRootDir . '/Resources/' . $bundleName : ''; // this case needs for tests (without app root directory) $resourceLoader->registerFoundResource($bundleClass, $bundleDir, $bundleAppDir, $resource); } } $container->addResource($resource); }
public function testProcess() { $expected = ['entity_data' => [['name' => 'OroCRM\\Bundle\\TestBundle1\\Entity\\Entity1', 'dependent' => ['OroCRM\\Bundle\\TestBundle1\\Entity\\Entity1Status', 'OroCRM\\Bundle\\TestBundle1\\Entity\\Entity1Reason'], 'dependencies' => ['OroCRM\\Bundle\\TestBundle1\\Entity\\Entity2', 'OroCRM\\Bundle\\TestBundle1\\Entity\\Entity3'], 'dependencies_condition' => 'OR', 'navigation_items' => ['application_menu.menu1.list'], 'belongs_to' => ['integration' => 'testIntegrationType']], ['name' => 'OroCRM\\Bundle\\TestBundle2\\Entity\\Entity', 'dependent' => ['OroCRM\\Bundle\\TestBundle2\\Entity\\EntityContact'], 'navigation_items' => ['application_menu.activities_tab.contact'], 'dependencies' => [], 'dependencies_condition' => 'AND']], 'channel_types' => ['test1' => ['label' => 'test1 type', 'entities' => ['OroCRM\\Bundle\\TestBundle1\\Entity\\Entity1', 'OroCRM\\Bundle\\TestBundle1\\Entity\\Entity2', 'OroCRM\\Bundle\\TestBundle1\\Entity\\Entity3'], 'integration_type' => 'test', 'customer_identity' => 'OroCRM\\Bundle\\TestBundle1\\Entity\\TestCustomer'], 'test2' => ['label' => 'test2 type', 'entities' => [], 'customer_identity' => 'OroCRM\\Bundle\\ChannelBundle\\Entity\\CustomerIdentity']]]; $bundle1 = new TestBundle1(); $bundle2 = new TestBundle2(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $settingsProviderDef = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Definition')->disableOriginalConstructor()->getMock(); $result = null; $container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerBuilder'); $container->expects($this->once())->method('getDefinition')->with(SettingsPass::SETTINGS_PROVIDER_ID)->will($this->returnValue($settingsProviderDef)); $settingsProviderDef->expects($this->once())->method('replaceArgument')->will($this->returnCallback(function ($index, $argument) use(&$result) { $result = $argument; })); $compiler = new SettingsPass(); $compiler->process($container); $this->assertEquals($expected, $result); }
public function testProcess() { $expected = ['form' => ['synchronization_settings' => ['schedule' => ['type' => 'schedule_form_type', 'applicable' => ['@test.client->test()'], 'options' => []], 'enabled' => ['type' => 'choice', 'options' => ['choices' => ['Enabled', 'Disabled']], 'priority' => -200, 'applicable' => []], 'some_setting' => ['type' => 'choice', 'applicable' => ['simple'], 'options' => []]]]]; $bundle1 = new TestBundle1(); $bundle2 = new TestBundle2(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $settingsProviderDef = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Definition')->disableOriginalConstructor()->getMock(); $result = null; $container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerBuilder'); $container->expects($this->once())->method('getDefinition')->with(SettingsPass::SETTINGS_PROVIDER_ID)->will($this->returnValue($settingsProviderDef)); $settingsProviderDef->expects($this->once())->method('replaceArgument')->will($this->returnCallback(function ($index, $argument) use(&$result) { $result = $argument; })); $compiler = new SettingsPass(); $compiler->process($container); $this->assertEquals($expected, $result); }
/** * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function testProcess() { $bundle1 = new TestBundle1(); $bundle2 = new TestBundle2(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $managerDef = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Definition')->disableOriginalConstructor()->getMock(); $result = null; $container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerBuilder'); $container->expects($this->once())->method('hasDefinition')->with(ConfigurationPass::MANAGER_SERVICE_ID)->will($this->returnValue(true)); $container->expects($this->once())->method('getDefinition')->with(ConfigurationPass::MANAGER_SERVICE_ID)->will($this->returnValue($managerDef)); $container->expects($this->once())->method('findTaggedServiceIds')->with(ConfigurationPass::TAG_NAME)->will($this->returnValue(['string_filter' => [['type' => 'string']], 'integer_filter' => [['type' => 'integer']], 'number_filter' => [['type' => 'number']], 'boolean_filter' => [['type' => 'boolean']]])); $managerDef->expects($this->once())->method('replaceArgument')->will($this->returnCallback(function ($index, $argument) use(&$result) { $result = $argument; })); $compiler = new ConfigurationPass(); $compiler->process($container); $expected = ['filters' => ['filter1' => ['applicable' => [['type' => 'string'], ['type' => 'text']], 'type' => 'string', 'template_theme' => 'embedded', 'query_type' => ['all']], 'filter2' => ['applicable' => [['entity' => 'TestEntity', 'field' => 'TestField']], 'type' => 'string', 'template_theme' => 'embedded', 'query_type' => ['all']], 'filter3' => ['applicable' => [['type' => 'integer']], 'type' => 'number', 'template_theme' => 'embedded', 'query_type' => ['all']], 'filter4' => ['applicable' => [['type' => 'boolean']], 'type' => 'boolean', 'template_theme' => 'embedded', 'query_type' => ['type1', 'type2']], 'filter5' => ['applicable' => [['type' => 'other']], 'type' => 'string', 'options' => ['option1' => true, 'option2' => 'val2'], 'init_module' => 'module1', 'template_theme' => 'embedded', 'query_type' => ['all']]], 'grouping' => ['exclude' => [['type' => 'text'], ['type' => 'array']]], 'converters' => ['converter1' => ['applicable' => [['type' => 'string'], ['type' => 'text']], 'functions' => [['name' => 'Func1', 'expr' => 'FUNC1($column)', 'return_type' => 'string', 'name_label' => 'oro.query_designer.converters.converter1.Func1.name', 'hint_label' => 'oro.query_designer.converters.converter1.Func1.hint'], ['name' => 'Func2', 'expr' => 'FUNC2($column)', 'name_label' => 'oro.query_designer.converters.converter1.Func2.name', 'hint_label' => 'oro.query_designer.converters.converter1.Func2.hint']], 'query_type' => ['type1']]], 'aggregates' => ['aggregate1' => ['applicable' => [['type' => 'integer'], ['type' => 'smallint'], ['type' => 'float']], 'functions' => [['name' => 'Min', 'expr' => 'MIN($column)', 'name_label' => 'oro.query_designer.aggregates.aggregate1.Min.name', 'hint_label' => 'oro.query_designer.aggregates.aggregate1.Min.hint'], ['name' => 'Max', 'expr' => 'MAX($column)', 'name_label' => 'oro.query_designer.aggregates.aggregate1.Max.name', 'hint_label' => 'oro.query_designer.aggregates.aggregate1.Max.hint'], ['name' => 'Count', 'expr' => 'COUNT($column)', 'return_type' => 'integer', 'name_label' => 'oro.query_designer.aggregates.aggregate1.Count.name', 'hint_label' => 'oro.query_designer.aggregates.aggregate1.Count.hint']], 'query_type' => ['type1']]]]; $this->assertEquals($expected, $result); }
/** * Get the list of all "autoregistered" bundles * * @return array List ob bundle objects */ public function registerBundles() { // clear state of CumulativeResourceManager CumulativeResourceManager::getInstance()->clear(); $bundles = array(); if (!$this->getCacheDir()) { foreach ($this->collectBundles() as $class => $params) { $bundles[] = $params['kernel'] ? new $class($this) : new $class(); } } else { $file = $this->getCacheDir() . '/bundles.php'; $cache = new ConfigCache($file, false); if (!$cache->isFresh($file)) { $dumper = new PhpBundlesDumper($this->collectBundles()); $cache->write($dumper->dump()); } // require instead of require_once used to correctly handle sub-requests $bundles = (require $cache); } return $bundles; }
/** * @dataProvider loadDataProvider */ public function testLoad(array $configs, array $expectedThemeSettings, $expectedActiveTheme) { $bundle1 = new Fixtures\FooBundle\FooBundle(); $bundle2 = new Fixtures\BarBundle\BarBundle(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $extension = new OroThemeExtension(); $container = new ContainerBuilder(); $extension->load($configs, $container); $registryDefinition = $container->getDefinition('oro_theme.registry'); $this->assertEquals('%oro_theme.registry.class%', $registryDefinition->getClass()); $this->assertEquals($expectedThemeSettings, $container->getParameter('oro_theme.settings')); $registryDefinitionMethodCalls = $registryDefinition->getMethodCalls(); if ($expectedActiveTheme) { $this->assertCount(1, $registryDefinitionMethodCalls); $this->assertEquals(array('setActiveTheme', array($expectedActiveTheme)), $registryDefinitionMethodCalls[0]); } else { $this->assertCount(0, $registryDefinitionMethodCalls); } $this->assertNotNull($container->getDefinition('oro_theme.registry')); $this->assertNotNull($container->getDefinition('oro_theme.twig.extension')); }
/** * @dataProvider loadConfigurationDataProvider */ public function testLoadConfiguration(array $configs, array $bundles, array $expectedMenu, array $expectedTitles) { CumulativeResourceManager::getInstance()->clear()->setBundles($bundles); $container = new ContainerBuilder(); $this->extension->load($configs, $container); $this->assertTrue($container->hasDefinition('oro_menu.configuration_builder')); $menuBuilder = $container->getDefinition('oro_menu.configuration_builder'); $data = $menuBuilder->getMethodCalls(); $this->assertEquals(array(array('setConfiguration', array($expectedMenu))), $data, 'Unexpected menu for builder'); $this->assertTrue($container->hasDefinition('oro_menu.twig.extension')); $menuBuilder = $container->getDefinition('oro_menu.twig.extension'); $data = $menuBuilder->getMethodCalls(); $this->assertEquals(array(array('setMenuConfiguration', array($expectedMenu))), $data, 'Unexpected menu for twig'); $this->assertTrue($container->hasDefinition('oro_navigation.title_config_reader')); $configReader = $container->getDefinition('oro_navigation.title_config_reader'); $data = $configReader->getMethodCalls(); $this->assertEquals(array(array('setConfigData', array($expectedTitles))), $data); $this->assertTrue($container->hasDefinition('oro_navigation.title_provider')); $titleService = $container->getDefinition('oro_navigation.title_provider'); $data = $titleService->getMethodCalls(); $this->assertEquals(array(array('setTitles', array($expectedTitles))), $data); }
/** * {@inheritdoc} */ public function isFresh($timestamp) { if ($this->isFreshTimestamp !== $timestamp) { $this->isFreshTimestamp = $timestamp; $this->isFresh = true; $bundles = CumulativeResourceManager::getInstance()->getBundles(); foreach ($bundles as $bundleClass) { $reflection = new \ReflectionClass($bundleClass); $bundleDir = dirname($reflection->getFilename()); /** @var CumulativeResourceLoader $loader */ foreach ($this->resourceLoaders as $loader) { if (!$loader->isResourceFresh($bundleClass, $bundleDir, $this, $timestamp)) { $this->isFresh = false; break; } } if (!$this->isFresh) { break; } } } return $this->isFresh; }
public function testLoadingLayoutUpdates() { $container = new ContainerBuilder(); $bundle1 = new TestBundle(); $bundle2 = new TestBundle2(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle1->getName() => get_class($bundle1), $bundle2->getName() => get_class($bundle2)]); $bundle1Dir = dirname((new \ReflectionClass($bundle1))->getFileName()); $bundle2Dir = dirname((new \ReflectionClass($bundle2))->getFileName()); $extension = new OroLayoutExtension(); $extension->load([], $container); $expectedResult = ['base' => ['route_name' => [str_replace('/', DIRECTORY_SEPARATOR, $bundle1Dir . '/Resources/views/layouts/base/route_name/update1.yml'), str_replace('/', DIRECTORY_SEPARATOR, $bundle2Dir . '/Resources/views/layouts/base/route_name/update1.yml'), str_replace('/', DIRECTORY_SEPARATOR, $bundle2Dir . '/Resources/views/layouts/base/route_name/update2.yml')], 'route_name2' => [str_replace('/', DIRECTORY_SEPARATOR, $bundle1Dir . '/Resources/views/layouts/base/route_name2/update1.yml'), str_replace('/', DIRECTORY_SEPARATOR, $bundle2Dir . '/Resources/views/layouts/base/route_name2/update1.yml')]], 'black' => ['route_name' => [str_replace('/', DIRECTORY_SEPARATOR, $bundle2Dir . '/Resources/views/layouts/black/route_name/update1.php')]]]; $updateResources = $container->getParameter('oro_layout.theme_updates_resources'); $this->normalizeResources($updateResources); $this->normalizeResources($expectedResult); $this->assertEquals($expectedResult, $updateResources); }
public function testLoaders() { $bundle = new TestBundle(); CumulativeResourceManager::getInstance()->clear()->setBundles([$bundle->getName() => get_class($bundle)]); $storage = new AclAnnotationStorage(); $annotationLoader = new AclAnnotationLoader(new AnnotationReader()); $annotationLoader->load($storage); $configLoader = new AclConfigLoader(); $configLoader->load($storage); $a = $storage->findById('user_test_main_controller'); $this->assertNotNull($a); $this->assertEquals('user_test_main_controller', $a->getId()); $this->assertEquals('action', $a->getType()); $this->assertEquals('', $a->getPermission()); $this->assertEquals('Test Group', $a->getGroup()); $this->assertEquals('Test controller for ACL', $a->getLabel()); $a = $storage->find('Oro\\Bundle\\SecurityBundle\\Tests\\Unit\\Annotation\\Fixtures\\Controller\\Classes\\MainTestController'); $this->assertNotNull($a); $this->assertEquals('user_test_main_controller', $a->getId()); $a = $storage->findById('user_test_main_controller_action1'); $this->assertNotNull($a); $this->assertEquals('user_test_main_controller_action1', $a->getId()); $this->assertEquals('entity', $a->getType()); $this->assertEquals('AcmeBundle\\Entity\\SomeClass', $a->getClass()); $this->assertEquals('VIEW', $a->getPermission()); $this->assertEquals('Test Group', $a->getGroup()); $this->assertEquals('Action 1', $a->getLabel()); $a = $storage->find('Oro\\Bundle\\SecurityBundle\\Tests\\Unit\\Annotation\\Fixtures\\Controller\\Classes\\MainTestController', 'test1Action'); $this->assertNotNull($a); $this->assertEquals('user_test_main_controller_action1', $a->getId()); $a = $storage->findById('user_test_main_controller_action2'); $this->assertNotNull($a); $this->assertEquals('user_test_main_controller_action2', $a->getId()); $this->assertEquals('action', $a->getType()); $this->assertEquals('', $a->getPermission()); $this->assertEquals('Another Group', $a->getGroup()); $this->assertEquals('Action 2', $a->getLabel()); $a = $storage->find('Oro\\Bundle\\SecurityBundle\\Tests\\Unit\\Annotation\\Fixtures\\Controller\\Classes\\MainTestController', 'test2Action'); $this->assertEquals('user_test_main_controller_action2', $a->getId()); $a = $storage->find('Oro\\Bundle\\SecurityBundle\\Tests\\Unit\\Annotation\\Fixtures\\Controller\\Classes\\MainTestController', 'test3Action'); $this->assertNotNull($a); $this->assertEquals('user_test_main_controller_action2', $a->getId()); $a = $storage->findById('test_controller'); $this->assertNotNull($a); $this->assertEquals('test_controller', $a->getId()); $this->assertEquals('entity', $a->getType()); $this->assertEquals('AcmeBundle\\Entity\\SomeEntity', $a->getClass()); $this->assertEquals('VIEW', $a->getPermission()); $this->assertEquals('Test Group', $a->getGroup()); $this->assertEquals('Test controller', $a->getLabel()); $a = $storage->find('Oro\\Bundle\\SecurityBundle\\Tests\\Unit\\Annotation\\Fixtures\\Controller\\Classes\\ConfigController', 'testAction'); $this->assertNotNull($a); $this->assertEquals('test_controller', $a->getId()); $a = $storage->findById('test_wo_bindings'); $this->assertNotNull($a); $this->assertEquals('test_wo_bindings', $a->getId()); $this->assertEquals('action', $a->getType()); $this->assertEquals('', $a->getPermission()); $this->assertEquals('Another Group', $a->getGroup()); $this->assertEquals('Test without bindings', $a->getLabel()); $this->assertCount(5, $storage->getAnnotations()); $this->assertCount(2, $storage->getAnnotations('entity')); $this->assertCount(3, $storage->getAnnotations('action')); }
public function testLoadWhenResourceLoaderReturnsArray() { $bundle1 = new TestBundle1(); $bundle1Dir = dirname((new \ReflectionClass($bundle1))->getFileName()); $bundle2 = new TestBundle2(); $bundle2Dir = dirname((new \ReflectionClass($bundle2))->getFileName()); $resourceLoader = $this->getMock('Oro\\Component\\Config\\Loader\\CumulativeResourceLoader'); $resource1 = new CumulativeResourceInfo(get_class($bundle1), 'res1', 'res1', []); $resource2 = new CumulativeResourceInfo(get_class($bundle1), 'res2', 'res2', []); $resourceLoader->expects($this->at(0))->method('load')->with(get_class($bundle1), $bundle1Dir)->will($this->returnValue([$resource1, $resource2])); $resource3 = new CumulativeResourceInfo(get_class($bundle2), 'res3', 'res3', []); $resourceLoader->expects($this->at(1))->method('load')->with(get_class($bundle2), $bundle2Dir)->will($this->returnValue($resource3)); CumulativeResourceManager::getInstance()->clear()->setBundles(['TestBundle1' => get_class($bundle1), 'TestBundle2' => get_class($bundle2)]); $loader = new CumulativeConfigLoader('test', $resourceLoader); $result = $loader->load(); $this->assertEquals([$resource1, $resource2, $resource3], $result); }