Loading core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php +10 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Drupal\Core\TypedData\TypedDataTrait; use Symfony\Component\Validator\ConstraintViolationList; /** * Defines a class for context definitions. Loading Loading @@ -307,7 +308,15 @@ public function isSatisfiedBy(ContextInterface $context) { $validator = $this->getTypedDataManager()->getValidator(); foreach ($values as $value) { $constraints = array_values($this->getConstraintObjects()); if ($definition->isMultiple()) { $violations = new ConstraintViolationList(); foreach ($value as $item) { $violations->addAll($validator->validate($item, $constraints)); } } else { $violations = $validator->validate($value, $constraints); } foreach ($violations as $delta => $violation) { // Remove any violation that does not correspond to the constraints. if (!in_array($violation->getConstraint(), $constraints)) { Loading core/tests/Drupal/KernelTests/Core/Plugin/ContextDefinitionTest.php +11 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\KernelTests\Core\Plugin; use Drupal\Core\Plugin\Context\Context; use Drupal\Core\Plugin\Context\ContextDefinition; use Drupal\Core\Plugin\Context\EntityContext; use Drupal\Core\Plugin\Context\EntityContextDefinition; Loading Loading @@ -33,6 +34,16 @@ public function testIsSatisfiedBy() { $requirement = new ContextDefinition('any'); $context = EntityContext::fromEntity($value); $this->assertTrue($requirement->isSatisfiedBy($context)); // Test with multiple values. $definition = EntityContextDefinition::create('entity_test'); $definition->setMultiple(); $entities = [ EntityTest::create([]), EntityTest::create([]), ]; $context = new Context($definition, $entities); $this->assertTrue($definition->isSatisfiedBy($context)); } /** Loading Loading
core/lib/Drupal/Core/Plugin/Context/ContextDefinition.php +10 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Drupal\Core\TypedData\TypedDataTrait; use Symfony\Component\Validator\ConstraintViolationList; /** * Defines a class for context definitions. Loading Loading @@ -307,7 +308,15 @@ public function isSatisfiedBy(ContextInterface $context) { $validator = $this->getTypedDataManager()->getValidator(); foreach ($values as $value) { $constraints = array_values($this->getConstraintObjects()); if ($definition->isMultiple()) { $violations = new ConstraintViolationList(); foreach ($value as $item) { $violations->addAll($validator->validate($item, $constraints)); } } else { $violations = $validator->validate($value, $constraints); } foreach ($violations as $delta => $violation) { // Remove any violation that does not correspond to the constraints. if (!in_array($violation->getConstraint(), $constraints)) { Loading
core/tests/Drupal/KernelTests/Core/Plugin/ContextDefinitionTest.php +11 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\KernelTests\Core\Plugin; use Drupal\Core\Plugin\Context\Context; use Drupal\Core\Plugin\Context\ContextDefinition; use Drupal\Core\Plugin\Context\EntityContext; use Drupal\Core\Plugin\Context\EntityContextDefinition; Loading Loading @@ -33,6 +34,16 @@ public function testIsSatisfiedBy() { $requirement = new ContextDefinition('any'); $context = EntityContext::fromEntity($value); $this->assertTrue($requirement->isSatisfiedBy($context)); // Test with multiple values. $definition = EntityContextDefinition::create('entity_test'); $definition->setMultiple(); $entities = [ EntityTest::create([]), EntityTest::create([]), ]; $context = new Context($definition, $entities); $this->assertTrue($definition->isSatisfiedBy($context)); } /** Loading