function ParamConverterManagerTest::testLazyInstantiation
Same name and namespace in other branches
- 11.x core/tests/Drupal/Tests/Core/ParamConverter/ParamConverterManagerTest.php \Drupal\Tests\Core\ParamConverter\ParamConverterManagerTest::testLazyInstantiation()
Tests that converters are lazily instantiated.
File
-
core/
tests/ Drupal/ Tests/ Core/ ParamConverter/ ParamConverterManagerTest.php, line 150
Class
Namespace
Drupal\Tests\Core\ParamConverterCode
public function testLazyInstantiation() : void {
$route = new Route('/test/{id}');
$converter = $this->createMock('Drupal\\Core\\ParamConverter\\ParamConverterInterface');
$converter->expects($this->exactly(2))
->method('convert')
->with(1, $this->isArray(), 'id', $this->isArray())
->willReturn('converted_value');
$instantiated = FALSE;
$manager = new ParamConverterManager(new ServiceLocator([
'converter1' => fn() => $converter,
'converter2' => function () use (&$instantiated, $converter) {
$instantiated = TRUE;
return $converter;
},
]));
$defaults = [
RouteObjectInterface::ROUTE_OBJECT => $route,
'id' => 1,
];
$route->setOption('parameters', [
'id' => [
'converter' => 'converter1',
],
]);
$result = $manager->convert($defaults);
$this->assertEquals('converted_value', $result['id']);
$this->assertFalse($instantiated);
$route->setOption('parameters', [
'id' => [
'converter' => 'converter2',
],
]);
$manager->convert($defaults);
$this->assertTrue($instantiated);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.