3 namespace Drupal\Tests\Core\Enhancer;
5 use Drupal\Core\Entity\EntityInterface;
6 use Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer;
7 use Drupal\Tests\UnitTestCase;
8 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
9 use Symfony\Component\HttpFoundation\Request;
10 use Symfony\Component\Routing\Route;
13 * @coversDefaultClass \Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer
16 class EntityRevisionRouteEnhancerTest extends UnitTestCase {
19 * @var \Drupal\entity\RouteEnhancer\EntityRevisionRouteEnhancer
21 protected $routeEnhancer;
26 protected function setUp() {
29 $this->routeEnhancer = new EntityRevisionRouteEnhancer();
35 public function testEnhanceWithoutParameter() {
36 $route = new Route('/test-path/{entity_test}');
38 $request = Request::create('/test-path');
41 $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
42 $this->assertEquals($defaults, $this->routeEnhancer->enhance($defaults, $request));
48 public function testEnhanceWithoutEntityRevision() {
49 $route = new Route('/test-path/{entity_test}', [], [], ['parameters' => ['entity_test' => ['type' => 'entity:entity_test']]]);
50 $request = Request::create('/test-path/123');
51 $entity = $this->prophesize(EntityInterface::class);
54 $defaults['entity_test'] = $entity->reveal();
55 $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
56 $this->assertEquals($defaults, $this->routeEnhancer->enhance($defaults, $request));
62 public function testEnhanceWithEntityRevision() {
63 $route = new Route('/test-path/{entity_test_revision}', [], [], ['parameters' => ['entity_test_revision' => ['type' => 'entity_revision:entity_test']]]);
64 $request = Request::create('/test-path/123');
65 $entity = $this->prophesize(EntityInterface::class);
68 $defaults['entity_test_revision'] = $entity->reveal();
69 $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
71 $expected = $defaults;
72 $expected['_entity_revision'] = $defaults['entity_test_revision'];
73 $this->assertEquals($expected, $this->routeEnhancer->enhance($defaults, $request));