public function FieldCrudTest::testFieldPropertyConstraints in Drupal 9
Same name and namespace in other branches
- 8 core/modules/field/tests/src/Kernel/FieldCrudTest.php \Drupal\Tests\field\Kernel\FieldCrudTest::testFieldPropertyConstraints()
- 10 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 128
Class
- FieldCrudTest
- Create field entities by attaching fields to entities.
Namespace
Drupal\Tests\field\KernelCode
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();
}