Avoid error when no slave database configuration are given + adding case in the test

This commit is contained in:
Maxime AILLOUD 2011-11-28 14:37:47 +01:00
parent c6f1dfe5cb
commit c8909ca528
2 changed files with 31 additions and 3 deletions

View file

@ -106,7 +106,9 @@ class PropelExtension extends Extension
$c = array();
foreach ($config['connections'] as $name => $conf) {
$c['datasources'][$name]['adapter'] = $conf['driver'];
$c['datasources'][$name]['slaves']['connection'] = $conf['slaves'];
if (!empty($conf['slaves'])) {
$c['datasources'][$name]['slaves']['connection'] = $conf['slaves'];
}
foreach (array('dsn', 'user', 'password', 'classname', 'options', 'attributes', 'settings') as $att) {
if (isset($conf[$att])) {

View file

@ -316,14 +316,40 @@ class PropelExtensionTest extends TestCase
$this->assertArrayHasKey('user', $config['datasources']['default']['slaves']['connection']['mysql_slave2']);
$this->assertArrayHasKey('password', $config['datasources']['default']['slaves']['connection']['mysql_slave2']);
$this->assertArrayHasKey('dsn', $config['datasources']['default']['slaves']['connection']['mysql_slave2']);
$this->assertEquals("mysql_usrs1", $config['datasources']['default']['slaves']['connection']['mysql_slave1']['user']);
$this->assertEquals("mysql_pwds1", $config['datasources']['default']['slaves']['connection']['mysql_slave1']['password']);
$this->assertEquals("mysql_dsns1", $config['datasources']['default']['slaves']['connection']['mysql_slave1']['dsn']);
$this->assertEquals("mysql_usrs2", $config['datasources']['default']['slaves']['connection']['mysql_slave2']['user']);
$this->assertEquals("mysql_pwds2", $config['datasources']['default']['slaves']['connection']['mysql_slave2']['password']);
$this->assertEquals("mysql_dsns2", $config['datasources']['default']['slaves']['connection']['mysql_slave2']['dsn']);
}
public function testDbalWithNoSlaves()
{
$container = $this->getContainer();
$loader = new PropelExtension();
$config_base = array(
'path' => '/propel',
'phing_path' => '/phing',
);
$config_mysql = array(
'user' => 'mysql_usr',
'password' => 'mysql_pwd',
'dsn' => 'mysql_dsn',
'driver' => 'mysql'
);
$configs = array($config_base, array('dbal' => $config_mysql));
$loader->load($configs, $container);
$arguments = $container->getDefinition('propel.configuration')->getArguments();
$config = $arguments[0];
$this->assertArrayNotHasKey('slaves', $config['datasources']['default']);
}
}