Skip to content

Commit 74d28f3

Browse files
committed
refactored view_response_listener configuration, added tests
1 parent cc4e4fa commit 74d28f3

File tree

3 files changed

+49
-9
lines changed

3 files changed

+49
-9
lines changed

DependencyInjection/Configuration.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
*/
2727
class Configuration implements ConfigurationInterface
2828
{
29-
public static $forceOptionValues = array(false, true, 'force');
30-
3129
/**
3230
* Generates the configuration tree.
3331
*
@@ -170,16 +168,14 @@ private function addViewSection(ArrayNodeDefinition $rootNode)
170168
->end()
171169
->arrayNode('view_response_listener')
172170
->beforeNormalization()
173-
->ifString()->then(function($v) { return array('enabled' => true, 'mode' => $v); })
174-
->end()
175-
->validate()
176-
->ifTrue(function ($v) { return !in_array($v['mode'], Configuration::$forceOptionValues); })
177-
->thenInvalid('The view_response_listener "mode" does not support %s. Please choose one of '.json_encode(Configuration::$forceOptionValues))
171+
->ifString()
172+
->then(function ($v) { return array('enabled' => in_array($v, array('force', 'true')), 'force' => 'force' === $v); })
178173
->end()
179174
->canBeEnabled()
180175
->children()
176+
->booleanNode('enabled')->defaultFalse()->end()
177+
->booleanNode('force')->defaultFalse()->end()
181178
->scalarNode('service')->defaultNull()->end()
182-
->scalarNode('mode')->defaultFalse()->end()
183179
->end()
184180
->end()
185181
->scalarNode('failed_validation')->defaultValue(Codes::HTTP_BAD_REQUEST)->end()

DependencyInjection/FOSRestExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ private function loadView(array $config, XmlFileLoader $loader, ContainerBuilder
264264
$service->clearTag('kernel.event_listener');
265265
}
266266

267-
$container->setParameter('fos_rest.view_response_listener.force_view', 'force' === $config['view']['view_response_listener']['mode']);
267+
$container->setParameter('fos_rest.view_response_listener.force_view', $config['view']['view_response_listener']['force']);
268268
}
269269

270270
$formats = array();

Tests/DependencyInjection/FOSRestExtensionTest.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,28 @@ public function testLoadFormatListenerWithSingleRule()
179179
$this->assertTrue($this->container->hasDefinition('fos_rest.format_listener'));
180180
}
181181

182+
public function testLoadParamFetcherListener()
183+
{
184+
$config = array(
185+
'fos_rest' => array('param_fetcher_listener' => true),
186+
);
187+
$this->extension->load($config, $this->container);
188+
189+
$this->assertTrue($this->container->hasDefinition('fos_rest.param_fetcher_listener'));
190+
$this->assertFalse($this->container->getParameter('fos_rest.param_fetcher_listener.set_params_as_attributes'));
191+
}
192+
193+
public function testLoadParamFetcherListenerForce()
194+
{
195+
$config = array(
196+
'fos_rest' => array('param_fetcher_listener' => 'force'),
197+
);
198+
$this->extension->load($config, $this->container);
199+
200+
$this->assertTrue($this->container->hasDefinition('fos_rest.param_fetcher_listener'));
201+
$this->assertTrue($this->container->getParameter('fos_rest.param_fetcher_listener.set_params_as_attributes'));
202+
}
203+
182204
public function testLoadFormatListenerWithMultipleRule()
183205
{
184206
$config = array(
@@ -224,6 +246,28 @@ public function testDisableViewResponseListener()
224246
$this->assertFalse($this->container->hasDefinition('fos_rest.view_response_listener'));
225247
}
226248

249+
public function testLoadViewResponseListener()
250+
{
251+
$config = array(
252+
'fos_rest' => array('view' => array('view_response_listener' => true)),
253+
);
254+
$this->extension->load($config, $this->container);
255+
256+
$this->assertTrue($this->container->hasDefinition('fos_rest.view_response_listener'));
257+
$this->assertFalse($this->container->getParameter('fos_rest.view_response_listener.force_view'));
258+
}
259+
260+
public function testLoadViewResponseListenerForce()
261+
{
262+
$config = array(
263+
'fos_rest' => array('view' => array('view_response_listener' => 'force')),
264+
);
265+
$this->extension->load($config, $this->container);
266+
267+
$this->assertTrue($this->container->hasDefinition('fos_rest.view_response_listener'));
268+
$this->assertTrue($this->container->getParameter('fos_rest.view_response_listener.force_view'));
269+
}
270+
227271
public function testForceEmptyContentDefault()
228272
{
229273
$this->extension->load(array(), $this->container);

0 commit comments

Comments
 (0)