/** * Tests getArguments(). * * Ensure that doGetArguments uses converted arguments if available. * * @see \Drupal\Core\Controller\ControllerResolver::getArguments() * @see \Drupal\Core\Controller\ControllerResolver::doGetArguments() */ public function testGetArguments() { $controller = function (EntityInterface $entity, $user) { }; $mock_entity = $this->getMockBuilder('Drupal\\Core\\Entity\\Entity')->disableOriginalConstructor()->getMock(); $mock_account = $this->getMock('Drupal\\Core\\Session\\AccountInterface'); $request = new Request(array(), array(), array('entity' => $mock_entity, 'user' => $mock_account, '_raw_variables' => new ParameterBag(array('entity' => 1, 'user' => 1)))); $arguments = $this->controllerResolver->getArguments($request, $controller); $this->assertEquals($mock_entity, $arguments[0], 'Type hinted variables should use upcasted values.'); $this->assertEquals(1, $arguments[1], 'Not type hinted variables should use not upcasted values.'); }
/** * Tests getArguments with a route match and a request. * * @covers ::getArguments * @covers ::doGetArguments */ public function testGetArgumentsWithRouteMatchAndRequest() { $request = Request::create('/test'); $mock_controller = new MockController(); $arguments = $this->controllerResolver->getArguments($request, [$mock_controller, 'getControllerWithRequestAndRouteMatch']); $this->assertEquals([RouteMatch::createFromRequest($request), $request], $arguments); }
/** * Tests getArguments with a route match and a PSR-7 request. * * @covers ::getArguments * @covers ::doGetArguments */ public function testGetArgumentsWithRouteMatchAndPsr7Request() { $request = Request::create('/test'); $mock_controller = new MockControllerPsr7(); $arguments = $this->controllerResolver->getArguments($request, [$mock_controller, 'getControllerWithRequestAndRouteMatch']); $this->assertEquals(RouteMatch::createFromRequest($request), $arguments[0], 'Ensure that the route match object is passed along as well'); $this->assertInstanceOf('Psr\\Http\\Message\\ServerRequestInterface', $arguments[1], 'Ensure that the PSR-7 object is passed along as well'); }