Version 1
[yaffs-website] / web / core / modules / search / tests / src / Functional / SearchKeywordsConditionsTest.php
diff --git a/web/core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php b/web/core/modules/search/tests/src/Functional/SearchKeywordsConditionsTest.php
new file mode 100644 (file)
index 0000000..26bff66
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+namespace Drupal\Tests\search\Functional;
+
+use Drupal\Component\Utility\Html;
+
+/**
+ * Verify the search without keywords set and extra conditions.
+ *
+ * Verifies that a plugin can override the isSearchExecutable() method to allow
+ * searching without keywords set and that GET query parameters are made
+ * available to plugins during search execution.
+ *
+ * @group search
+ */
+class SearchKeywordsConditionsTest extends SearchTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['comment', 'search_extra_type', 'test_page_test'];
+
+  /**
+   * A user with permission to search and post comments.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $searchingUser;
+
+  protected function setUp() {
+    parent::setUp();
+
+    // Create searching user.
+    $this->searchingUser = $this->drupalCreateUser(['search content', 'access content', 'access comments', 'skip comment approval']);
+    // Log in with sufficient privileges.
+    $this->drupalLogin($this->searchingUser);
+  }
+
+  /**
+   * Verify the keywords are captured and conditions respected.
+   */
+  public function testSearchKeywordsConditions() {
+    // No keys, not conditions - no results.
+    $this->drupalGet('search/dummy_path');
+    $this->assertNoText('Dummy search snippet to display');
+    // With keys - get results.
+    $keys = 'bike shed ' . $this->randomMachineName();
+    $this->drupalGet("search/dummy_path", ['query' => ['keys' => $keys]]);
+    $this->assertText("Dummy search snippet to display. Keywords: {$keys}");
+    $keys = 'blue drop ' . $this->randomMachineName();
+    $this->drupalGet("search/dummy_path", ['query' => ['keys' => $keys]]);
+    $this->assertText("Dummy search snippet to display. Keywords: {$keys}");
+    // Add some conditions and keys.
+    $keys = 'moving drop ' . $this->randomMachineName();
+    $this->drupalGet("search/dummy_path", ['query' => ['keys' => 'bike', 'search_conditions' => $keys]]);
+    $this->assertText("Dummy search snippet to display.");
+    $this->assertRaw(Html::escape(print_r(['keys' => 'bike', 'search_conditions' => $keys], TRUE)));
+  }
+
+}