diff --git a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php index db80eea..8572725 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationStateTest.php @@ -399,6 +399,37 @@ public function testMultilingualModeration() { } /** + * Test moderation when the moderation_state field has a config override. + */ + public function testModerationWithFieldConfigOverride() { + NodeType::create([ + 'type' => 'test_type', + ])->save(); + + $workflow = Workflow::load('editorial'); + $workflow->getTypePlugin()->addEntityTypeAndBundle('node', 'test_type'); + $workflow->save(); + + $fields = $this->container->get('entity_field.manager')->getFieldDefinitions('node', 'test_type'); + $field_config = $fields['moderation_state']->getConfig('test_type'); + $field_config->setLabel('Field Override!'); + $field_config->save(); + + $node = Node::create([ + 'title' => 'Test node', + 'type' => 'test_type', + ]); + $node->save(); + $this->assertFalse($node->isPublished()); + $this->assertEquals('draft', $node->moderation_state->value); + + $node->moderation_state = 'published'; + $node->save(); + $this->assertTrue($node->isPublished()); + $this->assertEquals('published', $node->moderation_state->value); + } + + /** * Tests that entities with special languages can be moderated. */ public function testModerationWithSpecialLanguages() { diff --git a/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php b/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php new file mode 100644 index 0000000..404c2f0 --- /dev/null +++ b/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php @@ -0,0 +1,65 @@ +installEntitySchema('base_field_override'); + } + + /** + * @covers ::getClass + * + * @dataProvider getClassTestCases + */ + public function testGetClass($field_type, $base_field_class, $expected_override_class) { + $base_field = BaseFieldDefinition::create($field_type) + ->setName('Test Field') + ->setTargetEntityTypeId('entity_test'); + if ($base_field_class) { + $base_field->setClass($base_field_class); + } + $override = BaseFieldOverride::createFromBaseFieldDefinition($base_field, 'test_bundle'); + $this->assertEquals($expected_override_class, ltrim($override->getClass(), '\\')); + } + + /** + * Test cases for ::testGetClass. + */ + public function getClassTestCases() { + return [ + 'String (default class)' => [ + 'string', + FALSE, + FieldItemList::class, + ], + 'String (overriden class)' => [ + 'string', + static::class, + static::class, + ], + ]; + } + +}