public function ModerationActionsTest::testNodeStatusActions in Drupal 9
Same name and namespace in other branches
- 8 core/modules/content_moderation/tests/src/Functional/ModerationActionsTest.php \Drupal\Tests\content_moderation\Functional\ModerationActionsTest::testNodeStatusActions()
Tests the node status actions report moderation status to users correctly.
@dataProvider nodeStatusActionsTestCases
File
- core/
modules/ content_moderation/ tests/ src/ Functional/ ModerationActionsTest.php, line 64
Class
- ModerationActionsTest
- Test the content moderation actions.
Namespace
Drupal\Tests\content_moderation\FunctionalCode
public function testNodeStatusActions($action, $bundle, $warning_appears, $starting_status, $final_status) {
// Create and run an action on a node.
$node = Node::create([
'type' => $bundle,
'title' => $this
->randomString(),
'status' => $starting_status,
]);
if ($bundle == 'moderated_bundle') {
$node->moderation_state->value = $starting_status ? 'published' : 'draft';
}
$node
->save();
$this
->drupalGet('admin/content');
$this
->submitForm([
'node_bulk_form[0]' => TRUE,
'action' => $action,
], 'Apply to selected items');
if ($warning_appears) {
if ($action == 'node_publish_action') {
$this
->assertSession()
->elementContains('css', '.messages--warning', node_get_type_label($node) . ' content items were skipped as they are under moderation and may not be directly published.');
}
else {
$this
->assertSession()
->elementContains('css', '.messages--warning', node_get_type_label($node) . ' content items were skipped as they are under moderation and may not be directly unpublished.');
}
}
else {
$this
->assertSession()
->elementNotExists('css', '.messages--warning');
}
// Ensure after the action has run, the node matches the expected status.
$node = Node::load($node
->id());
$this
->assertEquals($node
->isPublished(), $final_status);
}