From 06c8b1dd9fffd9fd0dd281c05d4c25cb1ccb1680 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Mon, 23 Oct 2023 10:58:53 +0100 Subject: [PATCH] Issue #3274419 by Marios Anagnostopoulos, Shubham Chandra, ravi.shankar, Alex Bukach, alexpott, smustgrave: Make BaseFieldOverride inherit internal property from the base field (cherry picked from commit f91e76e505ed30ede78e6bfa10945327abdf8a19) (cherry picked from commit 4e682c3a68eadee464606a1695bb7c9b3e2ce9d9) --- .../Core/Field/Entity/BaseFieldOverride.php | 7 ++++ .../Field/Entity/BaseFieldOverrideTest.php | 32 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php b/core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php index 54c08284f4e1..2fb62c010762 100644 --- a/core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php +++ b/core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php @@ -145,6 +145,13 @@ public function isComputed() { return $this->getBaseFieldDefinition()->isComputed(); } + /** + * {@inheritdoc} + */ + public function isInternal(): bool { + return $this->getBaseFieldDefinition()->isInternal(); + } + /** * {@inheritdoc} */ diff --git a/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php b/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php index 9ddfa59acc14..92c1b98cc047 100644 --- a/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php +++ b/core/tests/Drupal/KernelTests/Core/Field/Entity/BaseFieldOverrideTest.php @@ -82,6 +82,38 @@ public function testDefaultValueCallback() { $this->assertEquals([['target_id' => 99]], $base_field_override->getDefaultValue($entity)); } + /** + * Tests that some properties are inherited from the BaseFieldDefinition. + * + * @covers ::isReadOnly + * @covers ::isComputed + * @covers ::isInternal + * @covers ::getUniqueIdentifier + */ + public function testInheritedProperties() { + $base_field = BaseFieldDefinition::create('string') + ->setName('Test Field') + ->setTargetEntityTypeId('entity_test') + ->setReadOnly(TRUE) + /** Ensure that the internal property is inherited from the base field and not the parent class. @see FieldConfigBase::isInternal */ + ->setInternal(TRUE) + ->setComputed(FALSE); + + // Getters of the properties to check. + $methods = [ + 'getUniqueIdentifier', + 'getClass', + 'isComputed', + 'isReadOnly', + 'isInternal', + ]; + + $override = BaseFieldOverride::createFromBaseFieldDefinition($base_field, 'test_bundle'); + foreach ($methods as $method) { + $this->assertEquals($base_field->$method(), $override->$method()); + } + } + /** * A default value callback which returns a primitive value. * -- GitLab