Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / layout_builder / tests / src / Unit / LayoutBuilderRoutesTest.php
diff --git a/web/core/modules/layout_builder/tests/src/Unit/LayoutBuilderRoutesTest.php b/web/core/modules/layout_builder/tests/src/Unit/LayoutBuilderRoutesTest.php
new file mode 100644 (file)
index 0000000..e4b20bd
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+
+namespace Drupal\Tests\layout_builder\Unit;
+
+use Drupal\Core\Routing\RouteBuildEvent;
+use Drupal\layout_builder\Routing\LayoutBuilderRoutes;
+use Drupal\layout_builder\SectionStorage\SectionStorageDefinition;
+use Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface;
+use Drupal\layout_builder\SectionStorageInterface;
+use Drupal\Tests\UnitTestCase;
+use Prophecy\Argument;
+use Symfony\Component\Routing\Route;
+use Symfony\Component\Routing\RouteCollection;
+
+/**
+ * @coversDefaultClass \Drupal\layout_builder\Routing\LayoutBuilderRoutes
+ *
+ * @group layout_builder
+ */
+class LayoutBuilderRoutesTest extends UnitTestCase {
+
+  /**
+   * The Layout Builder route builder.
+   *
+   * @var \Drupal\layout_builder\SectionStorage\SectionStorageManagerInterface
+   */
+  protected $sectionStorageManager;
+
+  /**
+   * The Layout Builder route builder.
+   *
+   * @var \Drupal\layout_builder\Routing\LayoutBuilderRoutes
+   */
+  protected $routeBuilder;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->sectionStorageManager = $this->prophesize(SectionStorageManagerInterface::class);
+    $this->routeBuilder = new LayoutBuilderRoutes($this->sectionStorageManager->reveal());
+  }
+
+  /**
+   * @covers ::onAlterRoutes
+   */
+  public function testOnAlterRoutes() {
+    $expected = [
+      'test_route1' => new Route('/test/path1'),
+      'test_route_shared' => new Route('/test/path/shared2'),
+      'test_route2' => new Route('/test/path2'),
+    ];
+
+    $section_storage_first = $this->prophesize(SectionStorageInterface::class);
+    $section_storage_first->buildRoutes(Argument::type(RouteCollection::class))->shouldBeCalled()->will(function ($args) {
+      /** @var \Symfony\Component\Routing\RouteCollection $collection */
+      $collection = $args[0];
+      $collection->add('test_route_shared', new Route('/test/path/shared1'));
+      $collection->add('test_route1', new Route('/test/path1'));
+    });
+    $section_storage_second = $this->prophesize(SectionStorageInterface::class);
+    $section_storage_second->buildRoutes(Argument::type(RouteCollection::class))->shouldBeCalled()->will(function ($args) {
+      /** @var \Symfony\Component\Routing\RouteCollection $collection */
+      $collection = $args[0];
+      $collection->add('test_route_shared', new Route('/test/path/shared2'));
+      $collection->add('test_route2', new Route('/test/path2'));
+    });
+
+    $this->sectionStorageManager->loadEmpty('first')->willReturn($section_storage_first->reveal());
+    $this->sectionStorageManager->loadEmpty('second')->willReturn($section_storage_second->reveal());
+    $definitions['first'] = new SectionStorageDefinition();
+    $definitions['second'] = new SectionStorageDefinition();
+    $this->sectionStorageManager->getDefinitions()->willReturn($definitions);
+
+    $collection = new RouteCollection();
+    $event = new RouteBuildEvent($collection);
+    $this->routeBuilder->onAlterRoutes($event);
+    $this->assertEquals($expected, $collection->all());
+    $this->assertSame(array_keys($expected), array_keys($collection->all()));
+  }
+
+}