Skip to content

Commit 1c19e21

Browse files
committed
Add default_provider parameter
Add tests Fix tests
1 parent 2b8e139 commit 1c19e21

5 files changed

Lines changed: 37 additions & 4 deletions

File tree

DependencyInjection/BazingaGeocoderExtension.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ public function load(array $configs, ContainerBuilder $container)
3636
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
3737
$loader->load('services.xml');
3838

39+
if ($config['default_provider']) {
40+
$container->setParameter('bazinga_geocoder.default_provider', $config['default_provider']);
41+
}
42+
3943
if (!empty($config['fake_ip']) && true === $config['fake_ip']['enabled']) {
4044
$definition = $container->getDefinition('bazinga_geocoder.event_listener.fake_request');
4145
$definition->replaceArgument(0, $config['fake_ip']['ip']);

DependencyInjection/Compiler/AddProvidersPass.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,14 @@ public function process(ContainerBuilder $container)
4141
$array[] = new Reference($providerId);
4242
}
4343

44-
$container
45-
->getDefinition('bazinga_geocoder.geocoder')
46-
->addMethodCall('registerProviders', array($array))
47-
;
44+
$geocoderDefinition =$container->getDefinition('bazinga_geocoder.geocoder');
45+
$geocoderDefinition->addMethodCall('registerProviders', array($array));
46+
47+
if ($container->hasParameter('bazinga_geocoder.default_provider')) {
48+
$geocoderDefinition->addMethodCall(
49+
'using',
50+
array($container->getParameter('bazinga_geocoder.default_provider'))
51+
);
52+
}
4853
}
4954
}

DependencyInjection/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public function getConfigTreeBuilder()
3030

3131
$rootNode
3232
->children()
33+
->scalarNode('default_provider')->defaultNull()->end()
3334
->arrayNode('fake_ip')
3435
->beforeNormalization()
3536
->ifString()

Tests/DependencyInjection/BazingaGeocoderExtensionTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ class BazingaGeocoderExtensionTest extends \PHPUnit_Framework_TestCase
1818
public function testLoad()
1919
{
2020
$configs = Yaml::parse(file_get_contents(__DIR__.'/Fixtures/config.yml'));
21+
unset($configs['bazinga_geocoder']['default_provider']);
22+
2123
$container = new ContainerBuilder();
2224
$extension = new BazingaGeocoderExtension();
2325

@@ -46,6 +48,8 @@ public function testLoad()
4648
$this->assertTrue($dumperManager->has($name));
4749
}
4850

51+
$this->assertFalse($container->hasParameter('bazinga_geocoder.default_provider'));
52+
4953
$geocoder = $container->get('bazinga_geocoder.geocoder');
5054
$providers = $geocoder->getProviders();
5155
foreach (array(
@@ -75,6 +79,24 @@ public function testLoad()
7579
}
7680
}
7781

82+
public function testDefaultProvider()
83+
{
84+
$configs = Yaml::parse(file_get_contents(__DIR__.'/Fixtures/config.yml'));
85+
$container = new ContainerBuilder();
86+
$extension = new BazingaGeocoderExtension();
87+
88+
$container->setParameter('fixtures_dir', __DIR__ . '/Fixtures');
89+
90+
$container->set('doctrine.apc.cache', new ArrayCache());
91+
92+
$container->addCompilerPass(new AddProvidersPass());
93+
$extension->load($configs, $container);
94+
95+
$container->compile();
96+
97+
$this->assertEquals('bing_maps', $container->getParameter('bazinga_geocoder.default_provider'));
98+
}
99+
78100
public function testLoadingFakeIpOldWay()
79101
{
80102
$configs = Yaml::parse(file_get_contents(__DIR__.'/Fixtures/old_fake_ip.yml'));

Tests/DependencyInjection/Fixtures/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
bazinga_geocoder:
2+
default_provider: bing_maps
23
fake_ip:
34
ip: 33.33.33.11
45
priority: 128

0 commit comments

Comments
 (0)