open-orchestra/open-orchestra-cms-bundle

View on GitHub
ApiBundle/Tests/DependencyInjection/OpenOrchestraApiExtensionTest.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php

use OpenOrchestra\ApiBundle\DependencyInjection\OpenOrchestraApiExtension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use OpenOrchestra\BaseBundle\Tests\AbstractTest\AbstractBaseTestCase;

/**
 * Class OpenOrchestraApiExtensionTest
 */
class OpenOrchestraApiExtensionTest extends AbstractBaseTestCase
{
    /**
     * @var ContainerBuilder
     */
    protected $emptyContainer;
    /**
     * @var ContainerBuilder
     */
    protected $valueContainer;

    /**
     * Set up the test
     */
    public function setUp()
    {
        $this->emptyContainer = $this->loadContainerFromFile('empty');
        $this->valueContainer = $this->loadContainerFromFile('value');
    }

    /**
     * Test facades config
     *
     * @param string $parameter
     * @param string $facadeClass
     *
     * @dataProvider provideFacadesConfig
     */
    public function testDefaultFacadesConfig($parameter, $facadeClass)
    {
        $this->assertEquals('OpenOrchestra\ApiBundle\Facade\\'.$facadeClass, $this->emptyContainer->getParameter('open_orchestra_api.facade.'.$parameter.'.class'));
        $this->assertEquals('FacadeClass', $this->valueContainer->getParameter('open_orchestra_api.facade.'.$parameter.'.class'));
    }

    /**
     * @return array
     */
    public function provideFacadesConfig()
    {
        return array(
            array('api_client', 'ApiClientFacade'),
            array('api_client_collection', 'ApiClientCollectionFacade'),
            array('area', 'AreaFacade'),
            array('block', 'BlockFacade'),
            array('block_collection', 'BlockCollectionFacade'),
            array('content', 'ContentFacade'),
            array('content_attribute', 'ContentAttributeFacade'),
            array('content_collection', 'ContentCollectionFacade'),
            array('content_type', 'ContentTypeFacade'),
            array('content_type_collection', 'ContentTypeCollectionFacade'),
            array('field_type', 'FieldTypeFacade'),
            array('keyword', 'KeywordFacade'),
            array('keyword_collection', 'KeywordCollectionFacade'),
            array('link', 'LinkFacade'),
            array('node', 'NodeFacade'),
            array('node_collection', 'NodeCollectionFacade'),
            array('node_tree', 'NodeTreeFacade'),
            array('redirection', 'RedirectionFacade'),
            array('redirection_collection', 'RedirectionCollectionFacade'),
            array('site', 'SiteFacade'),
            array('site_collection', 'SiteCollectionFacade'),
            array('template', 'TemplateFacade'),
            array('trash_item', 'TrashItemFacade'),
            array('trash_item_collection', 'TrashItemCollectionFacade')
        );
    }

    /**
     * @param string $file
     *
     * @return ContainerBuilder
     */
    private function loadContainerFromFile($file)
    {
        $container = new ContainerBuilder();
        $container->setParameter('kernel.debug', false);
        $container->setParameter('kernel.cache_dir', '/tmp');
        $container->setParameter('kernel.environment', 'prod');
        $container->registerExtension(new OpenOrchestraApiExtension());

        $locator = new FileLocator(__DIR__ . '/Fixtures/config/');
        $loader = new YamlFileLoader($container, $locator);
        $loader->load($file . '.yml');
        $container->getCompilerPassConfig()->setOptimizationPasses(array());
        $container->getCompilerPassConfig()->setRemovingPasses(array());
        $container->compile();

        return $container;
    }
}