Skip to content

Commit

Permalink
refactored previous commit, fixed tests
Browse files Browse the repository at this point in the history
How to upgrade?

For XML configuration files:

 * All extensions should now use the config tag (this is just a convention as
   the YAML configurations files do not use it anymore):

 * The previous change means that the doctrine and security bundles now are
   wrapped under a main "config" tag:

        <doctrine:config>
            <doctrine:orm />
            <doctrine:dbal />
        </doctrine:config>

        <security:config>
            <security:acl />
            ...
        </security:config>

For YAML configuration files:

 * The main keys have been renamed as follows:

        * assetic:config -> assetic
        * app:config -> framework
        * webprofiler:config -> web_profiler
        * doctrine_odm.mongodb -> doctrine_mongo_db
        * doctrine:orm -> doctrine: { orm: ... }
        * doctrine:dbal -> doctrine: { dbal: ... }
        * security:config -> security
        * security:acl -> security: { acl: ... }
        * twig.config -> twig
        * zend.config -> zend
  • Loading branch information
fabpot committed Feb 15, 2011
1 parent 7f182bd commit 62e3053
Show file tree
Hide file tree
Showing 68 changed files with 543 additions and 510 deletions.
Expand Up @@ -55,7 +55,7 @@ class AsseticExtension extends Extension
* @param array $configs An array of configuration settings
* @param ContainerBuilder $container A ContainerBuilder instance
*/
public function configLoad($configs, ContainerBuilder $container)
public function load(array $configs, ContainerBuilder $container)
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('assetic.xml');
Expand Down
Expand Up @@ -50,10 +50,10 @@ public function testDefaultConfig($debug)
$this->container->setParameter('kernel.debug', $debug);

$extension = new AsseticExtension();
$extension->configLoad(array(), $this->container);
$extension->load(array(array()), $this->container);

$this->assertFalse($this->container->has('assetic.filter.yui_css'), '->configLoad() does not load the yui_css filter when a yui value is not provided');
$this->assertFalse($this->container->has('assetic.filter.yui_js'), '->configLoad() does not load the yui_js filter when a yui value is not provided');
$this->assertFalse($this->container->has('assetic.filter.yui_css'), '->load() does not load the yui_css filter when a yui value is not provided');
$this->assertFalse($this->container->has('assetic.filter.yui_js'), '->load() does not load the yui_js filter when a yui value is not provided');

// sanity check
$container = $this->getDumpedContainer();
Expand All @@ -73,10 +73,10 @@ public function getDebugModes()
public function testYuiConfig()
{
$extension = new AsseticExtension();
$extension->configLoad(array(array('yui' => '/path/to/yuicompressor.jar')), $this->container);
$extension->load(array(array('yui' => '/path/to/yuicompressor.jar')), $this->container);

$this->assertTrue($this->container->has('assetic.filter.yui_css'), '->configLoad() loads the yui_css filter when a yui value is provided');
$this->assertTrue($this->container->has('assetic.filter.yui_js'), '->configLoad() loads the yui_js filter when a yui value is provided');
$this->assertTrue($this->container->has('assetic.filter.yui_css'), '->load() loads the yui_css filter when a yui value is provided');
$this->assertTrue($this->container->has('assetic.filter.yui_js'), '->load() loads the yui_js filter when a yui value is provided');

// sanity check
$container = $this->getDumpedContainer();
Expand All @@ -91,7 +91,7 @@ public function testYuiConfig()
public function testDocumentRoot($key)
{
$extension = new AsseticExtension();
$extension->configLoad(array(array($key => '/path/to/web')), $this->container);
$extension->load(array(array($key => '/path/to/web')), $this->container);

$this->assertEquals('/path/to/web', $this->container->getParameter('assetic.document_root'), '"'.$key.'" sets document root');
}
Expand All @@ -110,7 +110,7 @@ public function getDocumentRootKeys()
public function testUseController($bool, $includes, $omits)
{
$extension = new AsseticExtension();
$extension->configLoad(array(array('use_controller' => $bool)), $this->container);
$extension->load(array(array('use_controller' => $bool)), $this->container);

foreach ($includes as $id) {
$this->assertTrue($this->container->has($id), '"'.$id.'" is registered when use_controller is '.$bool);
Expand Down
@@ -1,4 +1,4 @@
app.config:
framework:
charset: UTF-8
error_handler: null
csrf_protection:
Expand All @@ -12,10 +12,10 @@ app.config:
lifetime: 3600
auto_start: false

twig.config:
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%

assetic.config:
assetic:
use_controller: true
document_root: "%kernel.root_dir%/web"
Expand Up @@ -5,6 +5,15 @@
targetNamespace="http://www.symfony-project.org/schema/dic/doctrine"
elementFormDefault="qualified">

<xsd:element name="config">
<xsd:complexType>
<xsd:all>
<xsd:element name="dbal" type="dbal" minOccurs="0" maxOccurs="1" />
<xsd:element name="orm" type="orm" minOccurs="0" maxOccurs="1" />
</xsd:all>
</xsd:complexType>
</xsd:element>

<xsd:attributeGroup name="connection-config">
<xsd:attribute name="dbname" type="xsd:string" />
<xsd:attribute name="host" type="xsd:string" />
Expand All @@ -23,8 +32,6 @@
<xsd:attribute name="logging" type="xsd:string" default="false" />
</xsd:attributeGroup>

<xsd:element name="dbal" type="dbal" />

<xsd:complexType name="dbal">
<xsd:all>
<xsd:element name="connections" type="connections" minOccurs="0" maxOccurs="1" />
Expand Down Expand Up @@ -57,8 +64,6 @@
<xsd:attributeGroup ref="connection-config" />
</xsd:complexType>

<xsd:element name="orm" type="orm" />

<xsd:complexType name="mapping">
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="type" type="xsd:string" />
Expand All @@ -78,6 +83,7 @@
<xsd:all>
<xsd:element name="entity-managers" type="entity_managers" minOccurs="0" maxOccurs="1" />
<xsd:element name="mappings" type="mappings" minOccurs="0" maxOccurs="1" />
<xsd:element name="metadata-cache-driver" type="metadata_cache_driver" minOccurs="0" maxOccurs="1" />
</xsd:all>

<xsd:attribute name="default-entity-manager" type="xsd:string" />
Expand All @@ -89,6 +95,17 @@
<xsd:attribute name="query-cache-driver" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="metadata_cache_driver">
<xsd:all>
<xsd:element name="class" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="host" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="port" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="instance-class" type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:all>

<xsd:attribute name="type" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="entity_managers">
<xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:element name="entity-manager" type="entity_manager" />
Expand All @@ -98,6 +115,7 @@
<xsd:complexType name="entity_manager">
<xsd:all>
<xsd:element name="mappings" type="mappings" minOccurs="0" maxOccurs="1" />
<xsd:element name="metadata-cache-driver" type="metadata_cache_driver" minOccurs="0" maxOccurs="1" />
</xsd:all>

<xsd:attribute name="connection" type="xsd:string" />
Expand Down
Expand Up @@ -24,32 +24,37 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
{
abstract protected function loadFromFile(ContainerBuilder $container, $file);

public function setUp()
{
ContainerBuilder::clearExtensions();
}

public function testDbalOverrideDefaultConnection()
{
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array(), array('default_connection' => 'foo'), array()), $container);
$loader->load(array(array(), array('dbal' => array('default_connection' => 'foo')), array()), $container);

// doctrine.dbal.default_connection
$this->assertEquals('foo', $container->getParameter('doctrine.dbal.default_connection'), '->dbalLoad() overrides existing configuration options');
$this->assertEquals('foo', $container->getParameter('doctrine.dbal.default_connection'), '->load() overrides existing configuration options');
}

public function testDbalLoad()
{
$container = $this->getContainer();
$loader = new DoctrineExtension();
$loader->dbalLoad(array(array('password' => 'foo')), $container);
$loader->load(array(array('dbal' => array('password' => 'foo'))), $container);

$loader->dbalLoad(array(array(), array('default_connection' => 'foo'), array()), $container);
$loader->load(array(array(), array('dbal' => array('default_connection' => 'foo')), array()), $container);

$arguments = $container->getDefinition('doctrine.dbal.default_connection')->getArguments();
$config = $arguments[0];

$this->assertEquals('foo', $config['password']);
$this->assertEquals('root', $config['user']);

$loader->dbalLoad(array(array('user' => 'foo')), $container);
$loader->load(array(array('dbal' => array('user' => 'foo'))), $container);
$this->assertEquals('foo', $config['password']);
$this->assertEquals('root', $config['user']);
}
Expand All @@ -62,7 +67,7 @@ public function testDbalLoadFromXmlMultipleConnections()

$loadXml = new XmlFileLoader($container, new FileLocator(__DIR__.'/Fixtures/config/xml'));
$loadXml->load('dbal_service_multiple_connections.xml');
$loader->dbalLoad(array(array()), $container);
$loader->load(array(array()), $container);

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
Expand Down Expand Up @@ -96,7 +101,7 @@ public function testDbalLoadFromXmlSingleConnections()

$loadXml = new XmlFileLoader($container, new FileLocator(__DIR__.'/Fixtures/config/xml'));
$loadXml->load('dbal_service_single_connection.xml');
$loader->dbalLoad(array(array()), $container);
$loader->load(array(array()), $container);

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
Expand All @@ -117,8 +122,8 @@ public function testDependencyInjectionConfigurationDefaults()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('YamlBundle' => array()))), $container);
$loader->load(array(array('dbal' => array())), $container);
$loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array())))), $container);

$this->assertFalse($container->getParameter('doctrine.orm.auto_generate_proxy_classes'));
$this->assertEquals('Doctrine\ORM\Configuration', $container->getParameter('doctrine.orm.configuration_class'));
Expand All @@ -143,8 +148,8 @@ public function testDependencyInjectionConfigurationDefaults()
'mappings' => array('YamlBundle' => array()),
);

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array($config), $container);
$loader->load(array(array('dbal' => array())), $container);
$loader->load(array('orm' => $config), $container);

$definition = $container->getDefinition('doctrine.dbal.default_connection');
$this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass());
Expand Down Expand Up @@ -192,8 +197,8 @@ public function testSingleEntityManagerConfiguration()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array()), $container);
$loader->load(array(array('dbal' => array())), $container);
$loader->load(array(array('orm' => array())), $container);

$definition = $container->getDefinition('doctrine.dbal.default_connection');
$this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass());
Expand All @@ -215,8 +220,8 @@ public function testLoadSimpleSingleConnection()
$loader = new DoctrineExtension();
$container->registerExtension($loader);

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array()), $container);
$loader->load(array(array('dbal' => array())), $container);
$loader->load(array(array('orm' => array())), $container);

$this->loadFromFile($container, 'orm_service_simple_single_entity_manager');

Expand Down Expand Up @@ -365,8 +370,8 @@ public function testBundleEntityAliases()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('YamlBundle' => array()))), $container);
$loader->load(array(array()), $container);
$loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array())))), $container);

$definition = $container->getDefinition('doctrine.orm.default_configuration');
$this->assertDICDefinitionMethodCallOnce($definition, 'setEntityNamespaces',
Expand All @@ -379,8 +384,8 @@ public function testOverwriteEntityAliases()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('YamlBundle' => array('alias' => 'yml')))), $container);
$loader->load(array(array()), $container);
$loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array('alias' => 'yml'))))), $container);

$definition = $container->getDefinition('doctrine.orm.default_configuration');
$this->assertDICDefinitionMethodCallOnce($definition, 'setEntityNamespaces',
Expand All @@ -393,8 +398,8 @@ public function testYamlBundleMappingDetection()
$container = $this->getContainer('YamlBundle');
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('YamlBundle' => array()))), $container);
$loader->load(array(array()), $container);
$loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array())))), $container);

$definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
Expand All @@ -408,8 +413,8 @@ public function testXmlBundleMappingDetection()
$container = $this->getContainer('XmlBundle');
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('XmlBundle' => array()))), $container);
$loader->load(array(array()), $container);
$loader->load(array(array('orm' => array('mappings' => array('XmlBundle' => array())))), $container);

$definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
Expand All @@ -423,8 +428,8 @@ public function testAnnotationsBundleMappingDetection()
$container = $this->getContainer('AnnotationsBundle');
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('AnnotationsBundle' => array()))), $container);
$loader->load(array(array()), $container);
$loader->load(array(array('orm' => array('mappings' => array('AnnotationsBundle' => array())))), $container);

$definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
Expand All @@ -438,15 +443,15 @@ public function testOrmMergeConfigs()
$container = $this->getContainer(array('XmlBundle', 'AnnotationsBundle'));
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array(
$loader->load(array(array()), $container);
$loader->load(array(array('orm' => array(
'auto_generate_proxy_classes' => true,
'mappings' => array('AnnotationsBundle' => array())
),
array(
)),
array('orm' => array(
'auto_generate_proxy_classes' => false,
'mappings' => array('XmlBundle' => array())
)), $container);
))), $container);

$definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallAt(0, $definition, 'addDriver', array(
Expand Down Expand Up @@ -625,8 +630,8 @@ public function testAnnotationsBundleMappingDetectionWithVendorNamespace()
$container = $this->getContainer('AnnotationsBundle', 'Vendor');
$loader = new DoctrineExtension();

$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('AnnotationsBundle' => array()))), $container);
$loader->load(array(array()), $container);
$loader->load(array(array('orm' => array('mappings' => array('AnnotationsBundle' => array())))), $container);

$calls = $container->getDefinition('doctrine.orm.default_metadata_driver')->getMethodCalls();
$this->assertEquals('doctrine.orm.default_annotation_metadata_driver', (string) $calls[0][1][0]);
Expand Down
@@ -1,33 +1,35 @@
<?xml version="1.0" ?>

<container xmlns="http://www.symfony-project.org/schema/dic/services"
<srv:container xmlns="http://www.symfony-project.org/schema/dic/doctrine"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:doctrine="http://www.symfony-project.org/schema/dic/doctrine"
xmlns:srv="http://www.symfony-project.org/schema/dic/services"
xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd
http://www.symfony-project.org/schema/dic/doctrine http://www.symfony-project.org/schema/dic/doctrine/doctrine-1.0.xsd">

<doctrine:dbal>
<doctrine:connections>
<doctrine:connection
name="mysql"
dbname="mysql_db"
user="mysql_user"
password="mysql_s3cr3t"
unix-socket="/path/to/mysqld.sock" /><!-- -->
<doctrine:connection
name="sqlite"
driver="pdo_sqlite"
dbname="sqlite_db"
user="sqlite_user"
password="sqlite_s3cr3t"
memory="true" />
<doctrine:connection
name="oci"
driver="oci8"
dbname="oracle_db"
user="oracle_user"
password="oracle_s3cr3t"
charset="utf8" />
</doctrine:connections>
</doctrine:dbal>
</container>
<config>
<dbal>
<connections>
<connection
name="mysql"
dbname="mysql_db"
user="mysql_user"
password="mysql_s3cr3t"
unix-socket="/path/to/mysqld.sock" /><!-- -->
<connection
name="sqlite"
driver="pdo_sqlite"
dbname="sqlite_db"
user="sqlite_user"
password="sqlite_s3cr3t"
memory="true" />
<connection
name="oci"
driver="oci8"
dbname="oracle_db"
user="oracle_user"
password="oracle_s3cr3t"
charset="utf8" />
</connections>
</dbal>
</config>
</srv:container>

0 comments on commit 62e3053

Please sign in to comment.