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();
34 * @dataProvider providerTestApplies
36 public function testApplies(Route $route, $expected) {
37 $this->assertEquals($expected, $this->routeEnhancer->applies($route));
40 public function providerTestApplies() {
42 $data['no-parameter'] = [new Route('/test-path'), FALSE];
43 $data['none-revision-parameters'] = [new Route('/test-path/{entity_test}', [], [], ['parameters' => ['entity_test' => ['type' => 'entity:entity_test']]]), FALSE];
44 $data['with-revision-parameter'] = [new Route('/test-path/{entity_test_revision}', [], [], ['parameters' => ['entity_test_revision' => ['type' => 'entity_revision:entity_test']]]), TRUE];
52 public function testEnhanceWithoutEntityRevision() {
53 $route = new Route('/test-path/{entity_test}', [], [], ['parameters' => ['entity_test' => ['type' => 'entity:entity_test']]]);
54 $request = Request::create('/test-path/123');
55 $entity = $this->prophesize(EntityInterface::class);
58 $defaults['entity_test'] = $entity->reveal();
59 $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
60 $this->assertEquals($defaults, $this->routeEnhancer->enhance($defaults, $request));
66 public function testEnhanceWithEntityRevision() {
67 $route = new Route('/test-path/{entity_test_revision}', [], [], ['parameters' => ['entity_test_revision' => ['type' => 'entity_revision:entity_test']]]);
68 $request = Request::create('/test-path/123');
69 $entity = $this->prophesize(EntityInterface::class);
72 $defaults['entity_test_revision'] = $entity->reveal();
73 $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
75 $expected = $defaults;
76 $expected['_entity_revision'] = $defaults['entity_test_revision'];
77 $this->assertEquals($expected, $this->routeEnhancer->enhance($defaults, $request));