ControllerArgumentValueResolverPassTest.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\HttpKernel\Tests\DependencyInjection;
  11. use PHPUnit\Framework\TestCase;
  12. use Symfony\Component\DependencyInjection\ContainerBuilder;
  13. use Symfony\Component\DependencyInjection\Definition;
  14. use Symfony\Component\DependencyInjection\Reference;
  15. use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
  16. use Symfony\Component\HttpKernel\DependencyInjection\ControllerArgumentValueResolverPass;
  17. class ControllerArgumentValueResolverPassTest extends TestCase
  18. {
  19. public function testServicesAreOrderedAccordingToPriority()
  20. {
  21. $services = [
  22. 'n3' => [[]],
  23. 'n1' => [['priority' => 200]],
  24. 'n2' => [['priority' => 100]],
  25. ];
  26. $expected = [
  27. new Reference('n1'),
  28. new Reference('n2'),
  29. new Reference('n3'),
  30. ];
  31. $definition = new Definition(ArgumentResolver::class, [null, []]);
  32. $container = new ContainerBuilder();
  33. $container->setDefinition('argument_resolver', $definition);
  34. foreach ($services as $id => list($tag)) {
  35. $container->register($id)->addTag('controller.argument_value_resolver', $tag);
  36. }
  37. (new ControllerArgumentValueResolverPass())->process($container);
  38. $this->assertEquals($expected, $definition->getArgument(1)->getValues());
  39. }
  40. public function testReturningEmptyArrayWhenNoService()
  41. {
  42. $definition = new Definition(ArgumentResolver::class, [null, []]);
  43. $container = new ContainerBuilder();
  44. $container->setDefinition('argument_resolver', $definition);
  45. (new ControllerArgumentValueResolverPass())->process($container);
  46. $this->assertEquals([], $definition->getArgument(1)->getValues());
  47. }
  48. public function testNoArgumentResolver()
  49. {
  50. $container = new ContainerBuilder();
  51. (new ControllerArgumentValueResolverPass())->process($container);
  52. $this->assertFalse($container->hasDefinition('argument_resolver'));
  53. }
  54. }