Unverified Commit 1e7cb6ac authored by alexpott's avatar alexpott

Issue #2971779 by timmillwood, amateescu, alexpott, Sam152: Disallow...

Issue #2971779 by timmillwood, amateescu, alexpott, Sam152: Disallow moderation of internal entity types
parent 00ed1ed4
......@@ -130,7 +130,7 @@ public static function create(ContainerInterface $container) {
public function entityTypeAlter(array &$entity_types) {
foreach ($entity_types as $entity_type_id => $entity_type) {
// The ContentModerationState entity type should never be moderated.
if ($entity_type->isRevisionable() && $entity_type_id != 'content_moderation_state') {
if ($entity_type->isRevisionable() && !$entity_type->isInternal()) {
$entity_types[$entity_type_id] = $this->addModerationToEntityType($entity_type);
}
}
......
......@@ -61,4 +61,34 @@ public function testEntityBaseFieldInfo() {
$this->assertTrue($base_fields['moderation_state']->isTranslatable());
}
/**
* Test the correct entity types have moderation added.
*
* @covers ::entityTypeAlter
*
* @dataProvider providerTestEntityTypeAlter
*/
public function testEntityTypeAlter($entity_type_id, $moderatable) {
$entity_types = $this->entityTypeManager->getDefinitions();
$this->assertSame($moderatable, $entity_types[$entity_type_id]->hasHandlerClass('moderation'));
}
/**
* Provides test data for testEntityTypeAlter().
*
* @return array
* An array of test cases, where each test case is an array with the
* following values:
* - An entity type ID.
* - Whether the entity type is moderatable or not.
*/
public function providerTestEntityTypeAlter() {
$tests = [];
$tests['non_internal_non_revisionable'] = ['entity_test', FALSE];
$tests['non_internal_revisionable'] = ['entity_test_rev', TRUE];
$tests['internal_non_revisionable'] = ['entity_test_no_label', FALSE];
$tests['internal_revisionable'] = ['content_moderation_state', FALSE];
return $tests;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment