aa0897b22c8c28079fdd4d6f019efe7459a073ef
[yaffs-website] / 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 ::applies
34    * @dataProvider providerTestApplies
35    */
36   public function testApplies(Route $route, $expected) {
37     $this->assertEquals($expected, $this->routeEnhancer->applies($route));
38   }
39
40   public function providerTestApplies() {
41     $data = [];
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];
45
46     return $data;
47   }
48
49   /**
50    * @covers ::enhance
51    */
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);
56
57     $defaults = [];
58     $defaults['entity_test'] = $entity->reveal();
59     $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
60     $this->assertEquals($defaults, $this->routeEnhancer->enhance($defaults, $request));
61   }
62
63   /**
64    * @covers ::enhance
65    */
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);
70
71     $defaults = [];
72     $defaults['entity_test_revision'] = $entity->reveal();
73     $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
74
75     $expected = $defaults;
76     $expected['_entity_revision'] = $defaults['entity_test_revision'];
77     $this->assertEquals($expected, $this->routeEnhancer->enhance($defaults, $request));
78   }
79
80 }