function NodeTranslationUITest::testSearchIndexRebuildOnTranslationDeletion

Test deletion of translated content from search and index rebuild.

File

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

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.