You are here

public function NodeTranslationUITest::testRevisionTranslationRendering in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/node/tests/src/Functional/NodeTranslationUITest.php \Drupal\Tests\node\Functional\NodeTranslationUITest::testRevisionTranslationRendering()
  2. 10 core/modules/node/tests/src/Functional/NodeTranslationUITest.php \Drupal\Tests\node\Functional\NodeTranslationUITest::testRevisionTranslationRendering()

Tests that revision translations are rendered properly.

File

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

Class

NodeTranslationUITest
Tests the Node Translation UI.

Namespace

Drupal\Tests\node\Functional

Code

public function testRevisionTranslationRendering() {
  $storage = \Drupal::entityTypeManager()
    ->getStorage('node');

  // Create a node.
  $nid = $this
    ->createEntity([
    'title' => 'First rev en title',
  ], 'en');
  $node = $storage
    ->load($nid);
  $original_revision_id = $node
    ->getRevisionId();

  // Add a French translation.
  $translation = $node
    ->addTranslation('fr');
  $translation->title = 'First rev fr title';
  $translation
    ->setNewRevision(FALSE);
  $translation
    ->save();

  // Create a new revision.
  $node->title = 'Second rev en title';
  $node
    ->setNewRevision(TRUE);
  $node
    ->save();

  // Get an English view of this revision.
  $original_revision = $storage
    ->loadRevision($original_revision_id);
  $original_revision_url = $original_revision
    ->toUrl('revision')
    ->toString();

  // Should be different from regular node URL.
  $this
    ->assertNotSame($original_revision_url, $original_revision
    ->toUrl()
    ->toString());
  $this
    ->drupalGet($original_revision_url);
  $this
    ->assertSession()
    ->statusCodeEquals(200);

  // Contents should be in English, of correct revision.
  $this
    ->assertSession()
    ->pageTextContains('First rev en title');
  $this
    ->assertSession()
    ->pageTextNotContains('First rev fr title');

  // Get a French view.
  $url_fr = $original_revision
    ->getTranslation('fr')
    ->toUrl('revision')
    ->toString();

  // Should have different URL from English.
  $this
    ->assertNotSame($url_fr, $original_revision
    ->toUrl()
    ->toString());
  $this
    ->assertNotSame($url_fr, $original_revision_url);
  $this
    ->drupalGet($url_fr);
  $this
    ->assertSession()
    ->statusCodeEquals(200);

  // Contents should be in French, of correct revision.
  $this
    ->assertSession()
    ->pageTextContains('First rev fr title');
  $this
    ->assertSession()
    ->pageTextNotContains('First rev en title');
}