class ContentModerationWorkflowTypeApiTest in Drupal 10
Same name and namespace in other branches
- 8 core/modules/content_moderation/tests/src/Kernel/ContentModerationWorkflowTypeApiTest.php \Drupal\Tests\content_moderation\Kernel\ContentModerationWorkflowTypeApiTest
- 9 core/modules/content_moderation/tests/src/Kernel/ContentModerationWorkflowTypeApiTest.php \Drupal\Tests\content_moderation\Kernel\ContentModerationWorkflowTypeApiTest
Tests the API of the ContentModeration workflow type plugin.
@group content_moderation
@coversDefaultClass \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \PHPUnit\Framework\TestCase implements ServiceProviderInterface uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, AssertContentTrait, ConfigTestTrait, ExtensionListTestTrait, RandomGeneratorTrait, TestRequirementsTrait, PhpUnitWarnings
- class \Drupal\Tests\content_moderation\Kernel\ContentModerationWorkflowTypeApiTest
Expanded class hierarchy of ContentModerationWorkflowTypeApiTest
File
- core/
modules/ content_moderation/ tests/ src/ Kernel/ ContentModerationWorkflowTypeApiTest.php, line 15
Namespace
Drupal\Tests\content_moderation\KernelView source
class ContentModerationWorkflowTypeApiTest extends KernelTestBase {
/**
* A workflow for testing.
*
* @var \Drupal\workflows\Entity\Workflow
*/
protected $workflow;
/**
* Modules to install.
*
* @var array
*/
protected static $modules = [
'workflows',
'content_moderation',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->workflow = Workflow::create([
'id' => 'test',
'type' => 'content_moderation',
]);
}
/**
* @covers ::getBundlesForEntityType
* @covers ::addEntityTypeAndBundle
* @covers ::removeEntityTypeAndBundle
*/
public function testGetBundlesForEntityType() {
/** @var \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration $workflow_plugin */
$workflow_plugin = $this->workflow
->getTypePlugin();
// The content moderation plugin does not validate the existence of the
// entity type or bundle.
$this
->assertEquals([], $workflow_plugin
->getBundlesForEntityType('fake_node'));
$workflow_plugin
->addEntityTypeAndBundle('fake_node', 'fake_page');
$this
->assertEquals([
'fake_page',
], $workflow_plugin
->getBundlesForEntityType('fake_node'));
$this
->assertEquals([], $workflow_plugin
->getBundlesForEntityType('fake_block'));
$workflow_plugin
->removeEntityTypeAndBundle('fake_node', 'fake_page');
$this
->assertEquals([], $workflow_plugin
->getBundlesForEntityType('fake_node'));
}
/**
* @covers ::appliesToEntityTypeAndBundle
* @covers ::addEntityTypeAndBundle
* @covers ::removeEntityTypeAndBundle
*/
public function testAppliesToEntityTypeAndBundle() {
/** @var \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration $workflow_plugin */
$workflow_plugin = $this->workflow
->getTypePlugin();
// The content moderation plugin does not validate the existence of the
// entity type or bundle.
$this
->assertFalse($workflow_plugin
->appliesToEntityTypeAndBundle('fake_node', 'fake_page'));
$workflow_plugin
->addEntityTypeAndBundle('fake_node', 'fake_page');
$this
->assertTrue($workflow_plugin
->appliesToEntityTypeAndBundle('fake_node', 'fake_page'));
$this
->assertFalse($workflow_plugin
->appliesToEntityTypeAndBundle('fake_block', 'fake_custom'));
$workflow_plugin
->removeEntityTypeAndBundle('fake_node', 'fake_page');
$this
->assertFalse($workflow_plugin
->appliesToEntityTypeAndBundle('fake_node', 'fake_page'));
}
/**
* @covers ::addEntityTypeAndBundle
*/
public function testAddEntityTypeAndBundle() {
/** @var \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration $workflow_plugin */
$workflow_plugin = $this->workflow
->getTypePlugin();
// The bundles are intentionally added in reverse alphabetical order.
$workflow_plugin
->addEntityTypeAndBundle('fake_node', 'fake_page');
$workflow_plugin
->addEntityTypeAndBundle('fake_node', 'fake_article');
// Add another entity type that comes alphabetically before 'fake_node'.
$workflow_plugin
->addEntityTypeAndBundle('fake_block', 'fake_custom');
// The entity type keys and bundle values should be sorted alphabetically.
// The bundle array index should not reflect the order in which they are
// added.
$this
->assertSame([
'fake_block' => [
'fake_custom',
],
'fake_node' => [
'fake_article',
'fake_page',
],
], $workflow_plugin
->getConfiguration()['entity_types']);
}
/**
* @covers ::addEntityTypeAndBundle
* @covers ::removeEntityTypeAndBundle
*/
public function testRemoveEntityTypeAndBundle() {
/** @var \Drupal\content_moderation\Plugin\WorkflowType\ContentModeration $workflow_plugin */
$workflow_plugin = $this->workflow
->getTypePlugin();
// There should be no bundles for fake_node to start with.
$this
->assertEquals([], $workflow_plugin
->getBundlesForEntityType('fake_node'));
// Removing a bundle which is not set on the workflow should not throw an
// error and should still result in none being returned.
$workflow_plugin
->removeEntityTypeAndBundle('fake_node', 'fake_page');
$this
->assertEquals([], $workflow_plugin
->getBundlesForEntityType('fake_node'));
// Adding a bundle for fake_node should result it in being returned, but
// then removing it will return no bundles for fake_node.
$workflow_plugin
->addEntityTypeAndBundle('fake_node', 'fake_page');
$this
->assertEquals([
'fake_page',
], $workflow_plugin
->getBundlesForEntityType('fake_node'));
$workflow_plugin
->removeEntityTypeAndBundle('fake_node', 'fake_page');
$this
->assertEquals([], $workflow_plugin
->getBundlesForEntityType('fake_node'));
}
}