SearchIntegrationTest.php in Drupal 10
File
core/modules/views/tests/src/Functional/SearchIntegrationTest.php
View source
<?php
namespace Drupal\Tests\views\Functional;
use Drupal\Tests\Traits\Core\CronRunTrait;
class SearchIntegrationTest extends ViewTestBase {
use CronRunTrait;
protected static $modules = [
'node',
'search',
];
protected $defaultTheme = 'stark';
public static $testViews = [
'test_search',
];
public function testSearchIntegration() {
$type = $this
->drupalCreateContentType();
$node['title'] = 'pizza';
$node['body'] = [
[
'value' => 'pizza',
],
];
$node['type'] = $type
->id();
$this
->drupalCreateNode($node);
$this
->drupalGet('node/1');
$node_url = $this
->getUrl();
$node['title'] = 'sandwich';
$node['body'] = [
[
'value' => 'sandwich with a <a href="' . $node_url . '">link to first node</a>',
],
];
$this
->drupalCreateNode($node);
$node['title'] = 'cola';
$node['body'] = [
[
'value' => 'cola is good with pizza',
],
];
$node['type'] = $type
->id();
$this
->drupalCreateNode($node);
$this
->cronRun();
$this
->drupalGet('test-filter');
$this
->assertSession()
->linkExists('pizza');
$this
->assertSession()
->linkNotExists('sandwich');
$this
->assertSession()
->linkExists('cola');
$this
->drupalGet('test-arg/pizza');
$this
->assertOneLink('pizza');
$this
->assertSession()
->linkNotExists('sandwich');
$this
->assertOneLink('cola');
$this
->drupalGet('test-arg/sandwich');
$this
->assertSession()
->linkNotExists('pizza');
$this
->assertOneLink('sandwich');
$this
->assertSession()
->linkNotExists('cola');
$this
->drupalGet('test-arg/pizza OR sandwich');
$this
->assertOneLink('pizza');
$this
->assertOneLink('sandwich');
$this
->assertOneLink('cola');
$this
->drupalGet('test-arg/pizza sandwich OR cola');
$this
->assertSession()
->linkNotExists('pizza');
$this
->assertSession()
->linkNotExists('sandwich');
$this
->assertOneLink('cola');
$this
->drupalGet('test-arg/cola pizza');
$this
->assertSession()
->linkNotExists('pizza');
$this
->assertSession()
->linkNotExists('sandwich');
$this
->assertOneLink('cola');
$this
->drupalGet('test-arg/"cola is good"');
$this
->assertSession()
->linkNotExists('pizza');
$this
->assertSession()
->linkNotExists('sandwich');
$this
->assertOneLink('cola');
$node = [
'title' => "Drupal's search rocks.",
'type' => $type
->id(),
];
$this
->drupalCreateNode($node);
$node['title'] = "Drupal's search rocks <em>really</em> rocks!";
$this
->drupalCreateNode($node);
$this
->cronRun();
$this
->drupalGet('test-arg/rocks');
$xpath = '//div[@class="views-row"]//a';
$results = $this
->xpath($xpath);
$this
->assertEquals("Drupal's search rocks <em>really</em> rocks!", $results[0]
->getText());
$this
->assertEquals("Drupal's search rocks.", $results[1]
->getText());
$this
->assertSession()
->assertEscaped("Drupal's search rocks <em>really</em> rocks!");
$node = [
'title' => "Testing one two two two",
'type' => $type
->id(),
];
$this
->drupalCreateNode($node);
$node['title'] = "Testing one one one";
$this
->drupalCreateNode($node);
$this
->cronRun();
$this
->drupalGet('test-arg/one');
$xpath = '//div[@class="views-row"]//a';
$results = $this
->xpath($xpath);
$this
->assertEquals("Testing one one one", $results[0]
->getText());
$this
->assertEquals("Testing one two two two", $results[1]
->getText());
}
protected function assertOneLink(string $label) : void {
$xpath = $this
->assertSession()
->buildXPathQuery('//a[normalize-space(text())=:label]', [
':label' => $label,
]);
$this
->assertSession()
->elementsCount('xpath', $xpath, 1);
}
}