// The second entity does not have any value for the 'test_single_property'
// field, allowing us to test the 'default_value' parameter of
// \Drupal\Core\Field\BaseFieldDefinition::setInitialValueFromField().
$storage->
create([ 'name' => 'Second entity',
])->
save();
// Add a base field with an initial value inherited from another field.
$definitions['new_base_field'
] = BaseFieldDefinition::
create('string'
) ->
setName('new_base_field'
) ->
setLabel('A new base field'
) ->
setInitialValueFromField('name'
);
$definitions['another_base_field'
] = BaseFieldDefinition::
create('string'
) ->
setName('another_base_field'
) ->
setLabel('Another base field'
) ->
setInitialValueFromField('test_single_property',
$default_initial_value);
$this->state->
set('entity_test_update.additional_base_field_definitions',
$definitions);
$this->
assertFalse($db_schema->
fieldExists('entity_test_update', 'new_base_field'
), "New field 'new_base_field' does not exist before applying the update."
);
$this->
assertFalse($db_schema->
fieldExists('entity_test_update', 'another_base_field'
), "New field 'another_base_field' does not exist before applying the update."
);
$this->entityDefinitionUpdateManager->
installFieldStorageDefinition('new_base_field', 'entity_test_update', 'entity_test',
$definitions['new_base_field'
]);
$this->entityDefinitionUpdateManager->
installFieldStorageDefinition('another_base_field', 'entity_test_update', 'entity_test',
$definitions['another_base_field'
]);