function ModerationStateNodeTypeTest::testEnablingOnExistingContent
Same name in other branches
- 8.9.x core/modules/content_moderation/tests/src/Functional/ModerationStateNodeTypeTest.php \Drupal\Tests\content_moderation\Functional\ModerationStateNodeTypeTest::testEnablingOnExistingContent()
- 10 core/modules/content_moderation/tests/src/Functional/ModerationStateNodeTypeTest.php \Drupal\Tests\content_moderation\Functional\ModerationStateNodeTypeTest::testEnablingOnExistingContent()
- 11.x core/modules/content_moderation/tests/src/Functional/ModerationStateNodeTypeTest.php \Drupal\Tests\content_moderation\Functional\ModerationStateNodeTypeTest::testEnablingOnExistingContent()
Tests enabling moderation on an existing node-type, with content.
@covers \Drupal\content_moderation\EntityTypeInfo::formAlter @covers \Drupal\content_moderation\Entity\Handler\NodeModerationHandler::enforceRevisionsBundleFormAlter
File
-
core/
modules/ content_moderation/ tests/ src/ Functional/ ModerationStateNodeTypeTest.php, line 42
Class
- ModerationStateNodeTypeTest
- Tests moderation state node type integration.
Namespace
Drupal\Tests\content_moderation\FunctionalCode
public function testEnablingOnExistingContent() {
$editor_permissions = [
'administer workflows',
'access administration pages',
'administer content types',
'administer nodes',
'view latest version',
'view any unpublished content',
'access content overview',
'use editorial transition create_new_draft',
];
$publish_permissions = array_merge($editor_permissions, [
'use editorial transition publish',
]);
$editor = $this->drupalCreateUser($editor_permissions);
$editor_with_publish = $this->drupalCreateUser($publish_permissions);
// Create a node type that is not moderated.
$this->drupalLogin($editor);
$this->createContentTypeFromUi('Not moderated', 'not_moderated');
$this->grantUserPermissionToCreateContentOfType($editor, 'not_moderated');
$this->grantUserPermissionToCreateContentOfType($editor_with_publish, 'not_moderated');
// Create content.
$this->drupalGet('node/add/not_moderated');
$this->submitForm([
'title[0][value]' => 'Test',
], 'Save');
$this->assertSession()
->pageTextContains('Not moderated Test has been created.');
// Check that the 'Create new revision' is not disabled.
$this->drupalGet('/admin/structure/types/manage/not_moderated');
$this->assertNull($this->assertSession()
->fieldExists('options[revision]')
->getAttribute('disabled'));
// Now enable moderation state.
$this->enableModerationThroughUi('not_moderated');
// Check that the 'Create new revision' checkbox is checked and disabled.
$this->drupalGet('/admin/structure/types/manage/not_moderated');
$this->assertSession()
->checkboxChecked('options[revision]');
$this->assertSession()
->fieldDisabled('options[revision]');
// And make sure it works.
$nodes = \Drupal::entityTypeManager()->getStorage('node')
->loadByProperties([
'title' => 'Test',
]);
if (empty($nodes)) {
$this->fail('Could not load node with title Test');
return;
}
$node = reset($nodes);
$this->drupalGet('node/' . $node->id());
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->linkByHrefExists('node/' . $node->id() . '/edit');
$this->drupalGet('node/' . $node->id() . '/edit');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->optionExists('moderation_state[0][state]', 'draft');
$this->assertSession()
->optionNotExists('moderation_state[0][state]', 'published');
$this->drupalLogin($editor_with_publish);
$this->drupalGet('node/' . $node->id() . '/edit');
$this->assertSession()
->statusCodeEquals(200);
$this->assertSession()
->optionExists('moderation_state[0][state]', 'draft');
$this->assertSession()
->optionExists('moderation_state[0][state]', 'published');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.