Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / layout_builder / tests / src / Unit / SectionStorageManagerTest.php
diff --git a/web/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php b/web/core/modules/layout_builder/tests/src/Unit/SectionStorageManagerTest.php
new file mode 100644 (file)
index 0000000..392cd89
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+
+namespace Drupal\Tests\layout_builder\Unit;
+
+use Drupal\Component\Plugin\Factory\FactoryInterface;
+use Drupal\Core\Cache\CacheBackendInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\layout_builder\SectionListInterface;
+use Drupal\layout_builder\SectionStorage\SectionStorageManager;
+use Drupal\layout_builder\SectionStorageInterface;
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * @coversDefaultClass \Drupal\layout_builder\SectionStorage\SectionStorageManager
+ *
+ * @group layout_builder
+ */
+class SectionStorageManagerTest extends UnitTestCase {
+
+  /**
+   * The section storage manager.
+   *
+   * @var \Drupal\layout_builder\SectionStorage\SectionStorageManager
+   */
+  protected $manager;
+
+  /**
+   * The plugin.
+   *
+   * @var \Drupal\layout_builder\SectionStorageInterface
+   */
+  protected $plugin;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $cache = $this->prophesize(CacheBackendInterface::class);
+    $module_handler = $this->prophesize(ModuleHandlerInterface::class);
+    $this->manager = new SectionStorageManager(new \ArrayObject(), $cache->reveal(), $module_handler->reveal());
+
+    $this->plugin = $this->prophesize(SectionStorageInterface::class);
+
+    $factory = $this->prophesize(FactoryInterface::class);
+    $factory->createInstance('the_plugin_id', [])->willReturn($this->plugin->reveal());
+    $reflection_property = new \ReflectionProperty($this->manager, 'factory');
+    $reflection_property->setAccessible(TRUE);
+    $reflection_property->setValue($this->manager, $factory->reveal());
+  }
+
+  /**
+   * @covers ::loadEmpty
+   */
+  public function testLoadEmpty() {
+    $result = $this->manager->loadEmpty('the_plugin_id');
+    $this->assertInstanceOf(SectionStorageInterface::class, $result);
+  }
+
+  /**
+   * @covers ::loadFromStorageId
+   */
+  public function testLoadFromStorageId() {
+    $section_list = $this->prophesize(SectionListInterface::class);
+    $this->plugin->setSectionList($section_list->reveal())->will(function () {
+      return $this;
+    });
+    $this->plugin->getSectionListFromId('the_storage_id')->willReturn($section_list->reveal());
+
+    $result = $this->manager->loadFromStorageId('the_plugin_id', 'the_storage_id');
+    $this->assertInstanceOf(SectionStorageInterface::class, $result);
+  }
+
+  /**
+   * @covers ::loadFromRoute
+   */
+  public function testLoadFromRoute() {
+    $section_list = $this->prophesize(SectionListInterface::class);
+    $this->plugin->extractIdFromRoute('the_value', [], 'the_parameter_name', [])->willReturn('the_storage_id');
+    $this->plugin->getSectionListFromId('the_storage_id')->willReturn($section_list->reveal());
+    $this->plugin->setSectionList($section_list->reveal())->will(function () {
+      return $this;
+    });
+
+    $result = $this->manager->loadFromRoute('the_plugin_id', 'the_value', [], 'the_parameter_name', []);
+    $this->assertInstanceOf(SectionStorageInterface::class, $result);
+  }
+
+  /**
+   * @covers ::loadFromRoute
+   */
+  public function testLoadFromRouteNull() {
+    $this->plugin->extractIdFromRoute('the_value', [], 'the_parameter_name', ['_route' => 'the_route_name'])->willReturn(NULL);
+
+    $result = $this->manager->loadFromRoute('the_plugin_id', 'the_value', [], 'the_parameter_name', ['_route' => 'the_route_name']);
+    $this->assertNull($result);
+  }
+
+}