function FieldCrudTest::testFieldPropertyConstraints

Same name and namespace in other branches
  1. 8.9.x core/modules/field/tests/src/Kernel/FieldCrudTest.php \Drupal\Tests\field\Kernel\FieldCrudTest::testFieldPropertyConstraints()
  2. 10 core/modules/field/tests/src/Kernel/FieldCrudTest.php \Drupal\Tests\field\Kernel\FieldCrudTest::testFieldPropertyConstraints()
  3. 11.x core/modules/field/tests/src/Kernel/FieldCrudTest.php \Drupal\Tests\field\Kernel\FieldCrudTest::testFieldPropertyConstraints()

Tests setting and adding property constraints to a configurable field.

@covers ::setPropertyConstraints @covers ::addPropertyConstraints

File

core/modules/field/tests/src/Kernel/FieldCrudTest.php, line 131

Class

FieldCrudTest
Create field entities by attaching fields to entities.

Namespace

Drupal\Tests\field\Kernel

Code

public function testFieldPropertyConstraints() {
    $field = FieldConfig::create($this->fieldDefinition);
    $field->save();
    $field_name = $this->fieldStorage
        ->getName();
    // Test that constraints are applied to configurable fields. A TestField and
    // a Range constraint are added dynamically to limit the field to values
    // between 0 and 32.
    // @see field_test_entity_bundle_field_info_alter()
    \Drupal::state()->set('field_test_constraint', $field_name);
    // Clear the field definitions cache so the new constraints added by
    // field_test_entity_bundle_field_info_alter() are taken into consideration.
    \Drupal::service('entity_field.manager')->clearCachedFieldDefinitions();
    // Test the newly added property constraints in the same request as when the
    // caches were cleared. This will test the field definitions that are stored
    // in the static cache of
    // \Drupal\Core\Entity\EntityFieldManager::getFieldDefinitions().
    $this->doFieldPropertyConstraintsTests();
    // In order to test a real-world scenario where the property constraints are
    // only stored in the persistent cache of
    // \Drupal\Core\Entity\EntityFieldManager::getFieldDefinitions(), we need to
    // simulate a new request by removing the 'entity_field.manager' service,
    // thus forcing it to be re-initialized without static caches.
    \Drupal::getContainer()->set('entity_field.manager', NULL);
    // This will test the field definitions that are stored in the persistent
    // cache by \Drupal\Core\Entity\EntityFieldManager::getFieldDefinitions().
    $this->doFieldPropertyConstraintsTests();
}

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