function FieldSqlStorageTest::testLongNames

Same name and namespace in other branches
  1. 9 core/tests/Drupal/KernelTests/Core/Entity/FieldSqlStorageTest.php \Drupal\KernelTests\Core\Entity\FieldSqlStorageTest::testLongNames()
  2. 8.9.x core/tests/Drupal/KernelTests/Core/Entity/FieldSqlStorageTest.php \Drupal\KernelTests\Core\Entity\FieldSqlStorageTest::testLongNames()
  3. 10 core/tests/Drupal/KernelTests/Core/Entity/FieldSqlStorageTest.php \Drupal\KernelTests\Core\Entity\FieldSqlStorageTest::testLongNames()

Tests that long entity type and field names do not break.

File

core/tests/Drupal/KernelTests/Core/Entity/FieldSqlStorageTest.php, line 282

Class

FieldSqlStorageTest
Tests Field SQL Storage .

Namespace

Drupal\KernelTests\Core\Entity

Code

public function testLongNames() : void {
    // Use one of the longest entity_type names in core.
    $entity_type = $bundle = 'entity_test_multivalue_basefield';
    $this->installEntitySchema('entity_test_multivalue_basefield');
    $storage = $this->container
        ->get('entity_type.manager')
        ->getStorage($entity_type);
    // Create two fields and generate random values.
    $name_base = $this->randomMachineName(FieldStorageConfig::NAME_MAX_LENGTH - 1);
    $field_names = [];
    $values = [];
    for ($i = 0; $i < 2; $i++) {
        $field_names[$i] = $name_base . $i;
        FieldStorageConfig::create([
            'field_name' => $field_names[$i],
            'entity_type' => $entity_type,
            'type' => 'test_field',
        ])->save();
        FieldConfig::create([
            'field_name' => $field_names[$i],
            'entity_type' => $entity_type,
            'bundle' => $bundle,
        ])->save();
        $values[$field_names[$i]] = mt_rand(1, 127);
    }
    // Save an entity with values.
    $entity = $this->container
        ->get('entity_type.manager')
        ->getStorage($entity_type)
        ->create($values);
    $entity->save();
    // Load the entity back and check the values.
    $entity = $storage->load($entity->id());
    foreach ($field_names as $field_name) {
        $this->assertEquals($values[$field_name], $entity->get($field_name)->value);
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.