SearchQueryAlterTest.php

Same filename in other branches
  1. 9 core/modules/search/tests/src/Functional/SearchQueryAlterTest.php
  2. 8.9.x core/modules/search/tests/src/Functional/SearchQueryAlterTest.php
  3. 10 core/modules/search/tests/src/Functional/SearchQueryAlterTest.php

Namespace

Drupal\Tests\search\Functional

File

core/modules/search/tests/src/Functional/SearchQueryAlterTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\search\Functional;

use Drupal\Tests\BrowserTestBase;

/**
 * Tests that the node search query can be altered via the query alter hook.
 *
 * @group search
 */
class SearchQueryAlterTest extends BrowserTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'node',
        'search',
        'search_query_alter',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * Tests that the query alter works.
     */
    public function testQueryAlter() : void {
        $this->drupalCreateContentType([
            'type' => 'page',
            'name' => 'Basic page',
        ]);
        $this->drupalCreateContentType([
            'type' => 'article',
            'name' => 'Article',
        ]);
        // Log in with sufficient privileges.
        $this->drupalLogin($this->drupalCreateUser([
            'create page content',
            'search content',
        ]));
        // Create a node and an article with the same keyword. The query alter
        // test module will alter the query so only articles should be returned.
        $data = [
            'type' => 'page',
            'title' => 'test page',
            'body' => [
                [
                    'value' => 'pizza',
                ],
            ],
        ];
        $this->drupalCreateNode($data);
        $data['type'] = 'article';
        $data['title'] = 'test article';
        $this->drupalCreateNode($data);
        // Update the search index.
        $this->container
            ->get('plugin.manager.search')
            ->createInstance('node_search')
            ->updateIndex();
        // Search for the body keyword 'pizza'.
        $this->drupalGet('search/node');
        $this->submitForm([
            'keys' => 'pizza',
        ], 'Search');
        // The article should be there but not the page.
        $this->assertSession()
            ->pageTextContains('article');
        $this->assertSession()
            ->pageTextNotContains('page');
    }

}

Classes

Title Deprecated Summary
SearchQueryAlterTest Tests that the node search query can be altered via the query alter hook.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.