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

This commit is contained in:
ulrik nielsen 2012-04-17 12:12:23 +02:00
parent 6fe154ab94
commit 0507a57277
2 changed files with 84 additions and 0 deletions

View file

@ -104,6 +104,9 @@ class PropelExtension extends Extension
$c = array();
foreach ($config['connections'] as $name => $conf) {
$c['datasources'][$name]['adapter'] = $conf['driver'];
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

@ -271,4 +271,85 @@ class PropelExtensionTest extends TestCase
$this->assertEquals('SET NAMES UTF8', $config['datasources']['default']['connection']['settings']['queries']['query']);
}
public function testDbalWithSlaves()
{
$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',
'slaves' => array(
'mysql_slave1' => array(
'user' => 'mysql_usrs1',
'password' => 'mysql_pwds1',
'dsn' => 'mysql_dsns1',
),
'mysql_slave2' => array(
'user' => 'mysql_usrs2',
'password' => 'mysql_pwds2',
'dsn' => 'mysql_dsns2',
),
),
);
$configs = array($config_base, array('dbal' => $config_mysql));
$loader->load($configs, $container);
$arguments = $container->getDefinition('propel.configuration')->getArguments();
$config = $arguments[0];
$this->assertArrayHasKey('slaves', $config['datasources']['default']);
$this->assertArrayHasKey('connection', $config['datasources']['default']['slaves']);
$this->assertArrayHasKey('mysql_slave1', $config['datasources']['default']['slaves']['connection']);
$this->assertArrayHasKey('user', $config['datasources']['default']['slaves']['connection']['mysql_slave1']);
$this->assertArrayHasKey('password', $config['datasources']['default']['slaves']['connection']['mysql_slave1']);
$this->assertArrayHasKey('dsn', $config['datasources']['default']['slaves']['connection']['mysql_slave1']);
$this->assertArrayHasKey('mysql_slave2', $config['datasources']['default']['slaves']['connection']);
$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']);
}
}