4d1883a4476cc51cc2c1f994792b1dd00709bd34
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Enhancer / EntityRevisionRouteEnhancerTest.php
1 <?php
2
3 namespace Drupal\Tests\Core\Enhancer;
4
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;
11
12 /**
13  * @coversDefaultClass \Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer
14  * @group Entity
15  */
16 class EntityRevisionRouteEnhancerTest extends UnitTestCase {
17
18   /**
19    * @var \Drupal\entity\RouteEnhancer\EntityRevisionRouteEnhancer
20    */
21   protected $routeEnhancer;
22
23   /**
24    * {@inheritdoc}
25    */
26   protected function setUp() {
27     parent::setUp();
28
29     $this->routeEnhancer = new EntityRevisionRouteEnhancer();
30   }
31
32   /**
33    * @covers ::enhance
34    */
35   public function testEnhanceWithoutParameter() {
36     $route = new Route('/test-path/{entity_test}');
37
38     $request = Request::create('/test-path');
39
40     $defaults = [];
41     $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
42     $this->assertEquals($defaults, $this->routeEnhancer->enhance($defaults, $request));
43   }
44
45   /**
46    * @covers ::enhance
47    */
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);
52
53     $defaults = [];
54     $defaults['entity_test'] = $entity->reveal();
55     $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
56     $this->assertEquals($defaults, $this->routeEnhancer->enhance($defaults, $request));
57   }
58
59   /**
60    * @covers ::enhance
61    */
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);
66
67     $defaults = [];
68     $defaults['entity_test_revision'] = $entity->reveal();
69     $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
70
71     $expected = $defaults;
72     $expected['_entity_revision'] = $defaults['entity_test_revision'];
73     $this->assertEquals($expected, $this->routeEnhancer->enhance($defaults, $request));
74   }
75
76 }