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