Skip to content

Commit

Permalink
Return BC compatibility for @Route parameters and default values
Browse files Browse the repository at this point in the history
  • Loading branch information
stloyd committed Jul 1, 2013
1 parent 844f21e commit 9caf6bb
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Loader/AnnotationClassLoader.php
Expand Up @@ -180,7 +180,7 @@ protected function addRoute(RouteCollection $collection, $annot, $globals, \Refl

$defaults = array_replace($globals['defaults'], $annot->getDefaults());
foreach ($method->getParameters() as $param) {
if ($param->isOptional()) {
if (!isset($defaults[$param->getName()]) && $param->isOptional()) {
$defaults[$param->getName()] = $param->getDefaultValue();
}
}
Expand Down
20 changes: 13 additions & 7 deletions Tests/Loader/AnnotationClassLoaderTest.php
Expand Up @@ -11,6 +11,8 @@

namespace Symfony\Component\Routing\Tests\Loader;

use Symfony\Component\Routing\Annotation\Route;

class AnnotationClassLoaderTest extends AbstractAnnotationLoaderTest
{
protected $loader;
Expand Down Expand Up @@ -71,13 +73,18 @@ public function getLoadTests()
return array(
array(
'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BarClass',
array('name'=>'route1'),
array('arg2' => 'defaultValue2', 'arg3' =>'defaultValue3')
array('name' => 'route1'),
array('arg2' => 'defaultValue2', 'arg3' => 'defaultValue3')
),
array(
'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BarClass',
array('name'=>'route1', 'defaults' => array('arg2' => 'foo')),
array('arg2' => 'defaultValue2', 'arg3' =>'defaultValue3')
array('name' => 'route1', 'defaults' => array('arg2' => 'foo')),
array('arg2' => 'defaultValue2', 'arg3' => 'defaultValue3')
),
array(
'Symfony\Component\Routing\Tests\Fixtures\AnnotatedClasses\BarClass',
array('name' => 'route1', 'defaults' => array('arg2' => 'foobar')),
array('arg2' => false, 'arg3' => 'defaultValue3')
),
);
}
Expand Down Expand Up @@ -108,12 +115,11 @@ public function testLoad($className, $routeDatas = array(), $methodArgs = array(
$this->assertSame($routeDatas['path'], $route->getPath(), '->load preserves path annotation');
$this->assertSame($routeDatas['requirements'],$route->getRequirements(), '->load preserves requirements annotation');
$this->assertCount(0, array_intersect($route->getOptions(), $routeDatas['options']), '->load preserves options annotation');
$this->assertSame(array_replace($routeDatas['defaults'], $methodArgs), $route->getDefaults(), '->load preserves defaults annotation');
$this->assertSame(array_replace($methodArgs, $routeDatas['defaults']), $route->getDefaults(), '->load preserves defaults annotation');
}

private function getAnnotatedRoute($datas)
{
return new \Symfony\Component\Routing\Annotation\Route($datas);
return new Route($datas);
}

}

0 comments on commit 9caf6bb

Please sign in to comment.