search_api-8.x-1.15/tests/src/Functional/ExcerptFieldTest.php
tests/src/Functional/ExcerptFieldTest.php
<?php
namespace Drupal\Tests\search_api\Functional;
use Drupal\search_api\Entity\Index;
use Drupal\search_api\Utility\Utility;
/**
* Verifies that the "Search excerpt" field in entity displays works correctly.
*
* @group search_api
*/
class ExcerptFieldTest extends SearchApiBrowserTestBase {
use ExampleContentTrait;
/**
* Modules to enable for this test.
*
* @var string[]
*/
public static $modules = [
'block',
'language',
'search_api_test_excerpt_field',
];
/**
* {@inheritdoc}
*/
protected static $additionalBundles = TRUE;
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp();
\Drupal::getContainer()
->get('search_api.index_task_manager')
->addItemsAll(Index::load($this->indexId));
$this->insertExampleContent();
$this->indexItems($this->indexId);
// Do not use a batch for tracking the initial items after creating an
// index when running the tests via the GUI. Otherwise, it seems Drupal's
// Batch API gets confused and the test fails.
if (!Utility::isRunningInCli()) {
\Drupal::state()->set('search_api_use_tracking_batch', FALSE);
}
}
/**
* Tests that the "Search excerpt" field in entity displays works correctly.
*/
public function testSearchExcerptField() {
$assertSession = $this->assertSession();
$path = '/search-api-test-excerpt-field';
$this->drupalGet($path);
foreach ($this->ids as $itemId) {
$assertSession->pageTextContains("Item $itemId test excerpt");
}
// Visiting the same page a second time retrieves the rendered node from
// cache, not using the updated test excerpt template.
$stateKey = 'search_api_test_excerpt_field';
\Drupal::state()->set($stateKey, 'test--{{item_id}}--excerpt');
$this->drupalGet($path);
foreach ($this->ids as $itemId) {
$assertSession->pageTextContains("Item $itemId test excerpt");
$assertSession->pageTextNotContains("test--$itemId--excerpt");
}
// Changing the GET parameters does skip the render cache for the nodes.
$this->drupalGet($path, ['query' => ['foo' => 'bar']]);
foreach ($this->ids as $itemId) {
$assertSession->pageTextContains("test--$itemId--excerpt");
$assertSession->pageTextNotContains("Item $itemId test excerpt");
}
}
}
