function FieldAttachStorageTest::testFieldAttachLoadMultiple
Same name in other branches
- 9 core/modules/field/tests/src/Kernel/FieldAttachStorageTest.php \Drupal\Tests\field\Kernel\FieldAttachStorageTest::testFieldAttachLoadMultiple()
- 8.9.x core/modules/field/tests/src/Kernel/FieldAttachStorageTest.php \Drupal\Tests\field\Kernel\FieldAttachStorageTest::testFieldAttachLoadMultiple()
- 11.x core/modules/field/tests/src/Kernel/FieldAttachStorageTest.php \Drupal\Tests\field\Kernel\FieldAttachStorageTest::testFieldAttachLoadMultiple()
Tests the 'multiple' load feature.
File
-
core/
modules/ field/ tests/ src/ Kernel/ FieldAttachStorageTest.php, line 81
Class
- FieldAttachStorageTest
- Tests storage-related Field Attach API functions.
Namespace
Drupal\Tests\field\KernelCode
public function testFieldAttachLoadMultiple() : void {
$entity_type = 'entity_test_rev';
// Define 2 bundles.
$bundles = [
1 => 'test_bundle_1',
2 => 'test_bundle_2',
];
entity_test_create_bundle($bundles[1], entity_type: $entity_type);
entity_test_create_bundle($bundles[2], entity_type: $entity_type);
// Define 3 fields:
// - field_1 is in bundle_1 and bundle_2,
// - field_2 is in bundle_1,
// - field_3 is in bundle_2.
$field_bundles_map = [
1 => [
1,
2,
],
2 => [
1,
],
3 => [
2,
],
];
for ($i = 1; $i <= 3; $i++) {
$field_names[$i] = 'field_' . $i;
$field_storage = FieldStorageConfig::create([
'field_name' => $field_names[$i],
'entity_type' => $entity_type,
'type' => 'test_field',
]);
$field_storage->save();
foreach ($field_bundles_map[$i] as $bundle) {
FieldConfig::create([
'field_name' => $field_names[$i],
'entity_type' => $entity_type,
'bundle' => $bundles[$bundle],
])->save();
}
}
// Create one test entity per bundle, with random values.
foreach ($bundles as $index => $bundle) {
$entities[$index] = $this->container
->get('entity_type.manager')
->getStorage($entity_type)
->create([
'id' => $index,
'revision_id' => $index,
'type' => $bundle,
]);
$entity = clone $entities[$index];
foreach ($field_names as $field_name) {
if (!$entity->hasField($field_name)) {
continue;
}
$values[$index][$field_name] = mt_rand(1, 127);
$entity->{$field_name}
->setValue([
'value' => $values[$index][$field_name],
]);
}
$entity->enforceIsNew();
$entity->save();
}
// Check that a single load correctly loads field values for both entities.
$controller = \Drupal::entityTypeManager()->getStorage($entity->getEntityTypeId());
$controller->resetCache();
$entities = $controller->loadMultiple();
foreach ($entities as $index => $entity) {
foreach ($field_names as $field_name) {
if (!$entity->hasField($field_name)) {
continue;
}
// The field value loaded matches the one inserted.
$this->assertEquals($values[$index][$field_name], $entity->{$field_name}->value, "Entity {$index}: expected value was found.");
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.