Version 1
[yaffs-website] / web / core / modules / views / tests / src / Unit / Plugin / HandlerBaseTest.php
diff --git a/web/core/modules/views/tests/src/Unit/Plugin/HandlerBaseTest.php b/web/core/modules/views/tests/src/Unit/Plugin/HandlerBaseTest.php
new file mode 100644 (file)
index 0000000..12b7ca1
--- /dev/null
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\views\Unit\Plugin\HandlerBaseTest.
+ */
+
+namespace Drupal\Tests\views\Unit\Plugin;
+
+use Drupal\Tests\UnitTestCase;
+use Drupal\views\Plugin\views\HandlerBase;
+
+/**
+ * @coversDefaultClass \Drupal\views\Plugin\views\HandlerBase
+ * @group Views
+ */
+class HandlerBaseTest extends UnitTestCase {
+
+  use HandlerTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->setupViewsData();
+    $this->setupExecutableAndView();
+    $this->setupDisplay();
+  }
+
+  /**
+   * @covers ::getEntityType
+   */
+  public function testGetEntityTypeForFieldOnBaseTable() {
+    $handler = new TestHandler([], 'test_handler', []);
+    $handler->init($this->executable, $this->display);
+
+    $this->view->expects($this->any())
+      ->method('get')
+      ->with('base_table')
+      ->willReturn('test_entity_type_table');
+    $this->viewsData->expects($this->any())
+      ->method('get')
+      ->with('test_entity_type_table')
+      ->willReturn([
+        'table' => ['entity type' => 'test_entity_type']
+      ]);
+    $handler->setViewsData($this->viewsData);
+
+    $this->assertEquals('test_entity_type', $handler->getEntityType());
+  }
+
+  /**
+   * @covers ::getEntityType
+   */
+  public function testGetEntityTypeForFieldWithRelationship() {
+    $handler = new TestHandler([], 'test_handler', []);
+
+    $options = ['relationship' => 'test_relationship'];
+    $handler->init($this->executable, $this->display, $options);
+
+    $this->display->expects($this->atLeastOnce())
+      ->method('getOption')
+      ->with('relationships')
+      ->willReturn(['test_relationship' => ['table' => 'test_entity_type_table', 'id' => 'test_relationship', 'field' => 'test_relationship']]);
+
+    $this->view->expects($this->any())
+      ->method('get')
+      ->with('base_table')
+      ->willReturn('test_entity_type_table');
+
+    $this->viewsData->expects($this->any())
+      ->method('get')
+      ->willReturnMap([
+        ['test_entity_type_table', [
+          'table' => ['entity type' => 'test_entity_type'],
+          'test_relationship' => [
+            'relationship' => [
+              'base' => 'test_other_entity_type_table',
+              'base field' => 'id',
+            ],
+          ],
+        ]],
+        ['test_other_entity_type_table', [
+          'table' => ['entity type' => 'test_other_entity_type'],
+        ]],
+      ]);
+    $handler->setViewsData($this->viewsData);
+
+    $this->assertEquals('test_other_entity_type', $handler->getEntityType());
+  }
+
+}
+
+/**
+ * Allow testing base handler implementation by extending the abstract class.
+ */
+class TestHandler extends HandlerBase {
+
+}