X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fblock_content%2Ftests%2Fsrc%2FFunctional%2FBlockContentRevisionsTest.php;fp=web%2Fcore%2Fmodules%2Fblock_content%2Ftests%2Fsrc%2FFunctional%2FBlockContentRevisionsTest.php;h=fa88c64c261bc3f95661ba24e63190aacceabe46;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php b/web/core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php new file mode 100644 index 000000000..fa88c64c2 --- /dev/null +++ b/web/core/modules/block_content/tests/src/Functional/BlockContentRevisionsTest.php @@ -0,0 +1,107 @@ +createBlockContent('initial'); + + $blocks = []; + $logs = []; + + // Get original block. + $blocks[] = $block->getRevisionId(); + $logs[] = ''; + + // Create three revisions. + $revision_count = 3; + for ($i = 0; $i < $revision_count; $i++) { + $block->setNewRevision(TRUE); + $block->setRevisionLogMessage($this->randomMachineName(32)); + $block->setRevisionUser($this->adminUser); + $block->setRevisionCreationTime(REQUEST_TIME); + $logs[] = $block->getRevisionLogMessage(); + $block->save(); + $blocks[] = $block->getRevisionId(); + } + + $this->blocks = $blocks; + $this->revisionLogs = $logs; + } + + /** + * Checks block revision related operations. + */ + 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->assertEqual($loaded->getRevisionLogMessage(), $logs[$delta], format_string('Correct log message found for revision @revision', [ + '@revision' => $loaded->getRevisionId(), + ])); + if ($delta > 0) { + $this->assertTrue($loaded->getRevisionUser() instanceof UserInterface, 'Revision User found.'); + $this->assertTrue(is_numeric($loaded->getRevisionUserId()), 'Revision User ID found.'); + $this->assertTrue(is_numeric($loaded->getRevisionCreationTime()), 'Revision time found.'); + } + } + + // 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(); + + $this->drupalGet('block/' . $loaded->id()); + $this->assertNoText($loaded->body->value, 'Revision body text is not present on default version of block.'); + + // Verify that the non-default revision id is greater than the default + // revision id. + $default_revision = BlockContent::load($loaded->id()); + $this->assertTrue($loaded->getRevisionId() > $default_revision->getRevisionId(), 'Revision id is greater than default revision id.'); + } + +}