function BlockContentRevisionsTest::testRevisions

Same name and namespace in other branches
  1. 8.9.x core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php \Drupal\Tests\block_content\Functional\BlockContentRevisionsTest::testRevisions()
  2. 10 core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php \Drupal\Tests\block_content\Functional\BlockContentRevisionsTest::testRevisions()
  3. 11.x core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php \Drupal\Tests\block_content\Functional\BlockContentRevisionsTest::testRevisions()

Checks block revision related operations.

File

core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php, line 68

Class

BlockContentRevisionsTest
Create a block with revisions.

Namespace

Drupal\Tests\block_content\Functional

Code

public function testRevisions() {
    $blocks = $this->blocks;
    $logs = $this->revisionLogs;
    foreach ($blocks as $delta => $revision_id) {
        // Confirm the correct revision text appears.
        
        /** @var \Drupal\block_content\BlockContentInterface  $loaded */
        $loaded = $this->container
            ->get('entity_type.manager')
            ->getStorage('block_content')
            ->loadRevision($revision_id);
        // Verify revision log is the same.
        $this->assertEquals($logs[$delta], $loaded->getRevisionLogMessage(), new FormattableMarkup('Correct log message found for revision @revision', [
            '@revision' => $loaded->getRevisionId(),
        ]));
        if ($delta > 0) {
            $this->assertInstanceOf(UserInterface::class, $loaded->getRevisionUser());
            $this->assertIsNumeric($loaded->getRevisionUserId());
            $this->assertIsNumeric($loaded->getRevisionCreationTime());
        }
    }
    // Confirm that this is the default revision.
    $this->assertTrue($loaded->isDefaultRevision(), 'Third block revision is the default one.');
    // Make a new revision and set it to not be default.
    // This will create a new revision that is not "front facing".
    // Save this as a non-default revision.
    $loaded->setNewRevision();
    $loaded->isDefaultRevision(FALSE);
    $loaded->body = $this->randomMachineName(8);
    $loaded->save();
    // Confirm that revision body text is not present on default version of
    // block.
    $this->drupalGet('block/' . $loaded->id());
    $this->assertSession()
        ->pageTextNotContains($loaded->body->value);
    // Verify that the non-default revision id is greater than the default
    // revision id.
    $default_revision = BlockContent::load($loaded->id());
    // Verify that the revision ID is greater than the default revision ID.
    $this->assertGreaterThan($default_revision->getRevisionId(), $loaded->getRevisionId());
}

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