function NodeTranslationUITest::testSearchIndexRebuildOnTranslationDeletion

Test deletion of translated content from search and index rebuild.

File

core/modules/node/tests/src/Functional/NodeTranslationUITest.php, line 628

Class

NodeTranslationUITest
Tests the Node Translation UI.

Namespace

Drupal\Tests\node\Functional

Code

public function testSearchIndexRebuildOnTranslationDeletion() : void {
  \Drupal::service('module_installer')->install([
    'search',
  ]);
  $admin_user = $this->drupalCreateUser([
    'administer site configuration',
    'access administration pages',
    'administer content types',
    'delete content translations',
    'administer content translation',
    'translate any entity',
    'administer search',
    'search content',
    'delete any article content',
  ]);
  $this->drupalLogin($admin_user);
  // Create a node.
  $node = $this->drupalCreateNode([
    'type' => $this->bundle,
  ]);
  // Add a French translation.
  $translation = $node->addTranslation('fr');
  $translation->title = 'First rev fr title';
  $translation->setNewRevision(FALSE);
  $translation->save();
  // Check if 1 page is listed for indexing.
  $this->drupalGet('admin/config/search/pages');
  $this->assertSession()
    ->pageTextContains('There is 1 item left to index.');
  // Run cron.
  $this->drupalGet('admin/config/system/cron');
  $this->getSession()
    ->getPage()
    ->pressButton('Run cron');
  // Assert no items are left for indexing.
  $this->drupalGet('admin/config/search/pages');
  $this->assertSession()
    ->pageTextContains('There are 0 items left to index.');
  // Search for French content.
  $this->drupalGet('search/node', [
    'query' => [
      'keys' => urlencode('First rev fr title'),
    ],
  ]);
  $this->assertSession()
    ->pageTextContains('First rev fr title');
  // Delete translation.
  $this->drupalGet('fr/node/' . $node->id() . '/delete');
  $this->getSession()
    ->getPage()
    ->pressButton('Delete French translation');
  // Run cron.
  $this->drupalGet('admin/config/system/cron');
  $this->getSession()
    ->getPage()
    ->pressButton('Run cron');
  // Assert no items are left for indexing.
  $this->drupalGet('admin/config/search/pages');
  $this->assertSession()
    ->pageTextContains('There are 0 items left to index.');
  // Search for French content.
  $this->drupalGet('search/node', [
    'query' => [
      'keys' => urlencode('First rev fr title'),
    ],
  ]);
  $this->assertSession()
    ->pageTextNotContains('First rev fr title');
}

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