function EntityTypeConstraintsTest::testConstraintDefinition
Same name in other branches
- 9 core/tests/Drupal/KernelTests/Core/Entity/EntityTypeConstraintsTest.php \Drupal\KernelTests\Core\Entity\EntityTypeConstraintsTest::testConstraintDefinition()
- 10 core/tests/Drupal/KernelTests/Core/Entity/EntityTypeConstraintsTest.php \Drupal\KernelTests\Core\Entity\EntityTypeConstraintsTest::testConstraintDefinition()
- 11.x core/tests/Drupal/KernelTests/Core/Entity/EntityTypeConstraintsTest.php \Drupal\KernelTests\Core\Entity\EntityTypeConstraintsTest::testConstraintDefinition()
Tests defining entity constraints via entity type annotations and hooks.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Entity/ EntityTypeConstraintsTest.php, line 23
Class
- EntityTypeConstraintsTest
- Tests entity level validation constraints.
Namespace
Drupal\KernelTests\Core\EntityCode
public function testConstraintDefinition() {
// Test reading the annotation. There should be two constraints, the defined
// constraint and the automatically added EntityChanged constraint.
$entity_type = $this->entityTypeManager
->getDefinition('entity_test_constraints');
$default_constraints = [
'NotNull' => [],
'EntityChanged' => NULL,
'EntityUntranslatableFields' => NULL,
];
$this->assertEqual($default_constraints, $entity_type->getConstraints());
// Enable our test module and test extending constraints.
$this->enableModules([
'entity_test_constraints',
]);
$this->container
->get('module_handler')
->resetImplementations();
$extra_constraints = [
'Test' => [],
];
$this->state
->set('entity_test_constraints.build', $extra_constraints);
// Re-fetch the entity manager from the new container built after the new
// modules were enabled.
$this->entityTypeManager = $this->container
->get('entity_type.manager');
$this->entityTypeManager
->clearCachedDefinitions();
$entity_type = $this->entityTypeManager
->getDefinition('entity_test_constraints');
$this->assertEqual($default_constraints + $extra_constraints, $entity_type->getConstraints());
// Test altering constraints.
$altered_constraints = [
'Test' => [
'some_setting' => TRUE,
],
];
$this->state
->set('entity_test_constraints.alter', $altered_constraints);
// Clear the cache in state instance in the Drupal container, so it can pick
// up the modified value.
\Drupal::state()->resetCache();
$this->entityTypeManager
->clearCachedDefinitions();
$entity_type = $this->entityTypeManager
->getDefinition('entity_test_constraints');
$this->assertEqual($altered_constraints, $entity_type->getConstraints());
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.