123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- namespace Drupal\Tests\content_moderation\Functional;
- use Drupal\simpletest\ContentTypeCreationTrait;
- use Drupal\Tests\BrowserTestBase;
- use Drupal\Tests\content_moderation\Traits\ContentModerationTestTrait;
- /**
- * Test revision revert.
- *
- * @group content_moderation
- */
- class ModerationRevisionRevertTest extends BrowserTestBase {
- use ContentTypeCreationTrait;
- use ContentModerationTestTrait;
- /**
- * Modules to enable.
- *
- * @var array
- */
- public static $modules = [
- 'content_moderation',
- 'node',
- ];
- /**
- * {@inheritdoc}
- */
- public function setUp() {
- parent::setUp();
- $moderated_bundle = $this->createContentType(['type' => 'moderated_bundle']);
- $moderated_bundle->save();
- $workflow = $this->createEditorialWorkflow();
- $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'moderated_bundle');
- $workflow->save();
- /** @var \Drupal\Core\Routing\RouteBuilderInterface $router_builder */
- $router_builder = $this->container->get('router.builder');
- $router_builder->rebuildIfNeeded();
- $admin = $this->drupalCreateUser([
- 'access content overview',
- 'administer nodes',
- 'bypass node access',
- 'view all revisions',
- 'use editorial transition create_new_draft',
- 'use editorial transition publish',
- ]);
- $this->drupalLogin($admin);
- }
- /**
- * Test that reverting a revision works.
- */
- public function testEditingAfterRevertRevision() {
- // Create a draft.
- $this->drupalPostForm('node/add/moderated_bundle', [
- 'title[0][value]' => 'First draft node',
- 'moderation_state[0][state]' => 'draft',
- ], t('Save'));
- // Now make it published.
- $this->drupalPostForm('node/1/edit', [
- 'title[0][value]' => 'Published node',
- 'moderation_state[0][state]' => 'published',
- ], t('Save'));
- // Check the editing form that show the published title.
- $this->drupalGet('node/1/edit');
- $this->assertSession()
- ->pageTextContains('Published node');
- // Revert the first revision.
- $revision_url = 'node/1/revisions/1/revert';
- $this->drupalGet($revision_url);
- $this->assertSession()->elementExists('css', '.form-submit');
- $this->click('.form-submit');
- // Check that it reverted.
- $this->drupalGet('node/1/edit');
- $this->assertSession()
- ->pageTextContains('First draft node');
- // Try to save the node.
- $this->drupalPostForm('node/1/edit', [
- 'moderation_state[0][state]' => 'draft',
- ], t('Save'));
- // Check if the submission passed the EntityChangedConstraintValidator.
- $this->assertSession()
- ->pageTextNotContains('The content has either been modified by another user, or you have already submitted modifications. As a result, your changes cannot be saved.');
- // Check the node has been saved.
- $this->assertSession()
- ->pageTextContains('moderated_bundle First draft node has been updated');
- }
- }
|