function NodeRevisionsUiTest::testNodeRevisionsTabWithDefaultRevision

Same name in other branches
  1. 9 core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php \Drupal\Tests\node\Functional\NodeRevisionsUiTest::testNodeRevisionsTabWithDefaultRevision()
  2. 8.9.x core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php \Drupal\Tests\node\Functional\NodeRevisionsUiTest::testNodeRevisionsTabWithDefaultRevision()
  3. 10 core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php \Drupal\Tests\node\Functional\NodeRevisionsUiTest::testNodeRevisionsTabWithDefaultRevision()

Checks the Revisions tab.

File

core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php, line 142

Class

NodeRevisionsUiTest
Tests the UI for controlling node revision behavior.

Namespace

Drupal\Tests\node\Functional

Code

public function testNodeRevisionsTabWithDefaultRevision() : void {
    $this->drupalLogin($this->editor);
    // Create the node.
    $node = $this->drupalCreateNode();
    $storage = \Drupal::entityTypeManager()->getStorage($node->getEntityTypeId());
    // Create a new revision based on the default revision.
    // Revision 2.
    $node = $storage->load($node->id());
    $node->setNewRevision(TRUE);
    $node->save();
    // Revision 3.
    $node = $storage->load($node->id());
    $node->setNewRevision(TRUE);
    $node->save();
    // Revision 4.
    // Trigger translation changes in order to show the revision.
    $node = $storage->load($node->id());
    $node->setTitle($this->randomString());
    $node->isDefaultRevision(FALSE);
    $node->setNewRevision(TRUE);
    $node->save();
    // Revision 5.
    $node = $storage->load($node->id());
    $node->isDefaultRevision(FALSE);
    $node->setNewRevision(TRUE);
    $node->save();
    $node_id = $node->id();
    $this->drupalGet('node/' . $node_id . '/revisions');
    // Verify that the latest affected revision having been a default revision
    // is displayed as the current one.
    $this->assertSession()
        ->linkByHrefNotExists('/node/' . $node_id . '/revisions/1/revert');
    // The site may be installed in a subdirectory, so check if the URL is
    // contained in the retrieved one.
    $this->assertSession()
        ->elementAttributeContains('xpath', '//tr[contains(@class, "revision-current")]/td/a[1]', 'href', '/node/1');
    // Verify that the default revision can be an older revision than the latest
    // one.
    // Assert that the revisions with translations changes are shown.
    $this->assertSession()
        ->linkByHrefExists('/node/' . $node_id . '/revisions/4/revert');
    // Assert that the revisions without translations changes are filtered out:
    // 2, 3 and 5.
    $this->assertSession()
        ->linkByHrefNotExists('/node/' . $node_id . '/revisions/2/revert');
    $this->assertSession()
        ->linkByHrefNotExists('/node/' . $node_id . '/revisions/3/revert');
    $this->assertSession()
        ->linkByHrefNotExists('/node/' . $node_id . '/revisions/5/revert');
}

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