diff --git a/src/Symfony/Component/Form/Extension/DependencyInjection/DependencyInjectionExtension.php b/src/Symfony/Component/Form/Extension/DependencyInjection/DependencyInjectionExtension.php index 761ef2a5b1..59e7eb766e 100644 --- a/src/Symfony/Component/Form/Extension/DependencyInjection/DependencyInjectionExtension.php +++ b/src/Symfony/Component/Form/Extension/DependencyInjection/DependencyInjectionExtension.php @@ -42,6 +42,7 @@ class DependencyInjectionExtension implements FormExtensionInterface $this->guesserServiceIds = $guesserServiceIds; $this->typeServiceIds = $typeExtensionServices; $typeExtensionServices = $guesserServices; + $guesserServices = $guesserServiceIds; } $this->typeContainer = $typeContainer; diff --git a/src/Symfony/Component/Form/Tests/Extension/DependencyInjection/DependencyInjectionExtensionTest.php b/src/Symfony/Component/Form/Tests/Extension/DependencyInjection/DependencyInjectionExtensionTest.php index 68b30e92a5..df9f0d3e7e 100644 --- a/src/Symfony/Component/Form/Tests/Extension/DependencyInjection/DependencyInjectionExtensionTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/DependencyInjection/DependencyInjectionExtensionTest.php @@ -14,6 +14,8 @@ namespace Symfony\Component\Form\Tests\Extension\DependencyInjection; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; use Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension; +use Symfony\Component\Form\FormTypeGuesserChain; +use Symfony\Component\Form\FormTypeGuesserInterface; class DependencyInjectionExtensionTest extends TestCase { @@ -107,6 +109,49 @@ class DependencyInjectionExtensionTest extends TestCase $extension->getTypeExtensions('test'); } + public function testGetTypeGuesser() + { + $container = $this->createContainerMock(); + $extension = new DependencyInjectionExtension($container, array(), array($this->getMockBuilder(FormTypeGuesserInterface::class)->getMock())); + + $this->assertInstanceOf(FormTypeGuesserChain::class, $extension->getTypeGuesser()); + } + + public function testGetTypeGuesserReturnsNullWhenNoTypeGuessersHaveBeenConfigured() + { + $container = $this->createContainerMock(); + $extension = new DependencyInjectionExtension($container, array(), array()); + + $this->assertNull($extension->getTypeGuesser()); + } + + /** + * @group legacy + */ + public function testLegacyGetTypeGuesser() + { + $container = $this->createContainerMock(); + $container + ->expects($this->once()) + ->method('get') + ->with('foo') + ->willReturn($this->getMockBuilder(FormTypeGuesserInterface::class)->getMock()); + $extension = new DependencyInjectionExtension($container, array(), array(), array('foo')); + + $this->assertInstanceOf(FormTypeGuesserChain::class, $extension->getTypeGuesser()); + } + + /** + * @group legacy + */ + public function testLegacyGetTypeGuesserReturnsNullWhenNoTypeGuessersHaveBeenConfigured() + { + $container = $this->createContainerMock(); + $extension = new DependencyInjectionExtension($container, array(), array(), array()); + + $this->assertNull($extension->getTypeGuesser()); + } + private function createContainerMock() { return $this->getMockBuilder('Psr\Container\ContainerInterface')