public function ModerationFormTest::testWorkflowInUse in Drupal 8
Same name and namespace in other branches
- 9 core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php \Drupal\Tests\content_moderation\Functional\ModerationFormTest::testWorkflowInUse()
Tests that workflows and states can not be deleted if they are in use.
@covers \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration::workflowHasData @covers \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration::workflowStateHasData
File
- core/
modules/ content_moderation/ tests/ src/ Functional/ ModerationFormTest.php, line 504
Class
- ModerationFormTest
- Tests the moderation form, specifically on nodes.
Namespace
Drupal\Tests\content_moderation\FunctionalCode
public function testWorkflowInUse() {
$user = $this
->createUser([
'administer workflows',
'create moderated_content content',
'edit own moderated_content content',
'use editorial transition create_new_draft',
'use editorial transition publish',
'use editorial transition archive',
]);
$this
->drupalLogin($user);
$paths = [
'archived_state' => 'admin/config/workflow/workflows/manage/editorial/state/archived/delete',
'editorial_workflow' => 'admin/config/workflow/workflows/manage/editorial/delete',
];
$messages = [
'archived_state' => 'This workflow state is in use. You cannot remove this workflow state until you have removed all content using it.',
'editorial_workflow' => 'This workflow is in use. You cannot remove this workflow until you have removed all content using it.',
];
foreach ($paths as $path) {
$this
->drupalGet($path);
$this
->assertSession()
->buttonExists('Delete');
}
// Create new moderated content in draft.
$this
->drupalPostForm('node/add/moderated_content', [
'title[0][value]' => 'Some moderated content',
'body[0][value]' => 'First version of the content.',
'moderation_state[0][state]' => 'draft',
], 'Save');
// The archived state is not used yet, so can still be deleted.
$this
->drupalGet($paths['archived_state']);
$this
->assertSession()
->buttonExists('Delete');
// The workflow is being used, so can't be deleted.
$this
->drupalGet($paths['editorial_workflow']);
$this
->assertSession()
->buttonNotExists('Delete');
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->pageTextContains($messages['editorial_workflow']);
$node = $this
->drupalGetNodeByTitle('Some moderated content');
$this
->drupalPostForm('node/' . $node
->id() . '/edit', [
'moderation_state[0][state]' => 'published',
], 'Save');
$this
->drupalPostForm('node/' . $node
->id() . '/edit', [
'moderation_state[0][state]' => 'archived',
], 'Save');
// Now the archived state is being used so it can not be deleted either.
foreach ($paths as $type => $path) {
$this
->drupalGet($path);
$this
->assertSession()
->buttonNotExists('Delete');
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->pageTextContains($messages[$type]);
}
}