NodeSearchTest.php

Namespace

Drupal\Tests\node\Kernel

File

core/modules/node/tests/src/Kernel/NodeSearchTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\node\Kernel;

use Drupal\KernelTests\KernelTestBase;
use Drupal\node\Entity\NodeType;
use Drupal\Tests\node\Traits\NodeCreationTrait;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;

/**
 * Tests node search integration.
 */
class NodeSearchTest extends KernelTestBase {
  use NodeCreationTrait;
  
  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'node',
    'search',
    'user',
    'system',
  ];
  
  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    parent::setUp();
    $this->installSchema('node', 'node_access');
    $this->installEntitySchema('user');
    $this->installEntitySchema('node');
    $this->installSchema('search', [
      'search_index',
      'search_dataset',
      'search_total',
    ]);
    $this->installConfig([
      'search',
      'system',
    ]);
    $type = NodeType::create([
      'type' => 'article',
      'name' => 'Article',
    ]);
    $type->save();
  }
  
  /**
   * Tests that previous revisions of a node are not re-indexed.
   *
   * The idea is not to save URL aliases or execute certain procedures
   * if the node being processed is not the default revision.
   *
   * @see \Drupal\node\Hook\NodeSearchHooks::nodeUpdate()
   */
  public function testNodeReindexDefaultRevision() : void {
    $node = $this->createNode([
      'type' => 'article',
      'title' => 'Initial Title 1',
    ]);
    $initialRevisionId = $node->getRevisionId();
    $node->setTitle($this->randomMachineName());
    $node->setNewRevision();
    $node->save();
    // Set up the search configuration and the index.
    $plugin = \Drupal::service('plugin.manager.search')->createInstance('node_search');
    // Update the index.
    $plugin->updateIndex();
    $nodeStorage = \Drupal::service('entity_type.manager')->getStorage('node');
    $old_revision = $nodeStorage->loadRevision($initialRevisionId);
    $old_revision->save();
    // Check that updating a non-default revision did not trigger a reindex.
    $result = \Drupal::database()->select('search_dataset', 'sd')
      ->fields('sd', [
      'sid',
      'type',
      'reindex',
    ])
      ->condition('reindex', 0, '>')
      ->execute()
      ->fetchAll();
    $this->assertCount(0, $result);
  }

}

Classes

Title Deprecated Summary
NodeSearchTest Tests node search integration.

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