function FieldSqlStorageTest::testNullSerializedFieldLoad
Tests loading base and configurable serialized fields with NULL values.
Note that this tests loading field values that are literally NULL. It doesn't test that NULL values are serialized and unserialized properly.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Entity/ FieldSqlStorageTest.php, line 585
Class
- FieldSqlStorageTest
- Tests Field SQL Storage .
Namespace
Drupal\KernelTests\Core\EntityCode
public function testNullSerializedFieldLoad() : void {
$connection = Database::getConnection();
$entity_type = $bundle = 'entity_test_serialized_field';
$this->installEntitySchema($entity_type);
$storage = $this->container
->get('entity_type.manager')
->getStorage($entity_type);
// The serialized base field is already part of the test entity type, but
// a configurable field has to be created.
$serialized_field = $this->randomMachineName();
$field_storage = FieldStorageConfig::create([
'field_name' => $serialized_field,
'entity_type' => $entity_type,
'type' => 'nullable_serialized_item_test',
'cardinality' => 1,
'required' => FALSE,
]);
$field_storage->save();
$field = FieldConfig::create([
'field_storage' => $field_storage,
'bundle' => $bundle,
]);
$field->save();
$entity = $storage->create();
$entity->save();
// Manually set the field values to NULL with database queries.
$connection->update('entity_test_serialized_fields')
->fields([
'serialized' => NULL,
])
->condition('id', $entity->id())
->execute();
$connection->insert($entity_type . '__' . $serialized_field)
->fields([
'bundle' => $bundle,
'deleted' => 0,
'entity_id' => $entity->id(),
'revision_id' => $entity->id(),
'langcode' => $entity->language()
->getId(),
'delta' => 0,
$serialized_field . '_value' => NULL,
])
->execute();
$storage->load($entity->id());
$this->assertNull($entity->serialized->value);
$this->assertNull($entity->{$serialized_field}->value);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.