Version 1
[yaffs-website] / web / core / modules / views / tests / src / Kernel / Plugin / SqlQueryTest.php
diff --git a/web/core/modules/views/tests/src/Kernel/Plugin/SqlQueryTest.php b/web/core/modules/views/tests/src/Kernel/Plugin/SqlQueryTest.php
new file mode 100644 (file)
index 0000000..6846f77
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+
+namespace Drupal\Tests\views\Kernel\Plugin;
+
+use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
+use Drupal\views\Views;
+
+/**
+ * Tests the sql query plugin.
+ *
+ * @group views
+ * @see \Drupal\views\Plugin\views\query\Sql
+ */
+class SqlQueryTest extends ViewsKernelTestBase {
+
+  /**
+   * Views used by this test.
+   *
+   * @var array
+   */
+  public static $testViews = ['test_view'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function viewsData() {
+    $data = parent::viewsData();
+    $data['views_test_data']['table']['base']['access query tag'] = 'test_tag';
+    $data['views_test_data']['table']['base']['query metadata'] = ['key1' => 'test_metadata', 'key2' => 'test_metadata2'];
+
+    return $data;
+  }
+
+  /**
+   * Tests adding some metadata/tags to the views query.
+   */
+  public function testExecuteMetadata() {
+    $view = Views::getView('test_view');
+    $view->setDisplay();
+
+    $view->initQuery();
+    $view->execute();
+    /** @var \Drupal\Core\Database\Query\Select $query */
+    $main_query = $view->build_info['query'];
+    /** @var \Drupal\Core\Database\Query\Select $count_query */
+    $count_query = $view->build_info['count_query'];
+
+    foreach ([$main_query, $count_query] as $query) {
+      // Check query access tags.
+      $this->assertTrue($query->hasTag('test_tag'));
+
+      // Check metadata.
+      $this->assertIdentical($query->getMetaData('key1'), 'test_metadata');
+      $this->assertIdentical($query->getMetaData('key2'), 'test_metadata2');
+    }
+
+    $query_options = $view->display_handler->getOption('query');
+    $query_options['options']['disable_sql_rewrite'] = TRUE;
+    $view->display_handler->setOption('query', $query_options);
+    $view->save();
+    $view->destroy();
+
+    $view = Views::getView('test_view');
+    $view->setDisplay();
+    $view->initQuery();
+    $view->execute();
+    /** @var \Drupal\Core\Database\Query\Select $query */
+    $main_query = $view->build_info['query'];
+    /** @var \Drupal\Core\Database\Query\Select $count_query */
+    $count_query = $view->build_info['count_query'];
+
+    foreach ([$main_query, $count_query] as $query) {
+      // Check query access tags.
+      $this->assertFalse($query->hasTag('test_tag'));
+
+      // Check metadata.
+      $this->assertIdentical($query->getMetaData('key1'), NULL);
+      $this->assertIdentical($query->getMetaData('key2'), NULL);
+    }
+  }
+
+}