diff --git a/core/lib/Drupal/Core/TypedData/Validation/TypedDataAwareValidatorTrait.php b/core/lib/Drupal/Core/TypedData/Validation/TypedDataAwareValidatorTrait.php index ba5beef..b590f2f 100644 --- a/core/lib/Drupal/Core/TypedData/Validation/TypedDataAwareValidatorTrait.php +++ b/core/lib/Drupal/Core/TypedData/Validation/TypedDataAwareValidatorTrait.php @@ -28,7 +28,7 @@ public function getTypedData() { $context = $this->context; /** @var \Symfony\Component\Validator\Context\ExecutionContextInterface $context */ $data = $context->getObject(); - if (!$data instanceof TypedDataInterface && !$data instanceof PrimitiveInterface) { + if (!$data instanceof TypedDataInterface) { throw new \LogicException("There is no Typed Data object available."); } return $data; diff --git a/core/tests/Drupal/Tests/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidatorTest.php b/core/tests/Drupal/Tests/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidatorTest.php index 49c08e5..2bcb318 100644 --- a/core/tests/Drupal/Tests/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidatorTest.php +++ b/core/tests/Drupal/Tests/Core/Validation/Plugin/Validation/Constraint/PrimitiveTypeConstraintValidatorTest.php @@ -7,6 +7,12 @@ namespace Drupal\Tests\Core\Validation\Plugin\Validation\Constraint; +use Drupal\Core\TypedData\DataDefinition; +use Drupal\Core\TypedData\Plugin\DataType\BooleanData; +use Drupal\Core\TypedData\Plugin\DataType\FloatData; +use Drupal\Core\TypedData\Plugin\DataType\IntegerData; +use Drupal\Core\TypedData\Plugin\DataType\StringData; +use Drupal\Core\TypedData\Plugin\DataType\Uri; use Drupal\Core\TypedData\PrimitiveInterface; use Drupal\Core\Validation\Plugin\Validation\Constraint\PrimitiveTypeConstraint; use Drupal\Core\Validation\Plugin\Validation\Constraint\PrimitiveTypeConstraintValidator; @@ -47,31 +53,31 @@ public function testValidate(PrimitiveInterface $typed_data, $value, $valid) { public function provideTestValidate() { $data = []; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\BooleanInterface'), NULL, TRUE]; + $data[] = [new BooleanData(DataDefinition::create('boolean')), NULL, TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\BooleanInterface'), 1, TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\BooleanInterface'), 'test', FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\FloatInterface'), 1.5, TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\FloatInterface'), 'test', FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\IntegerInterface'), 1, TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\IntegerInterface'), 1.5, FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\IntegerInterface'), 'test', FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\StringInterface'), 'test', TRUE]; + $data[] = [new BooleanData(DataDefinition::create('boolean')), 1, TRUE]; + $data[] = [new BooleanData(DataDefinition::create('boolean')), 'test', FALSE]; + $data[] = [new FloatData(DataDefinition::create('float')), 1.5, TRUE]; + $data[] = [new FloatData(DataDefinition::create('float')), 'test', FALSE]; + $data[] = [new IntegerData(DataDefinition::create('integer')), 1, TRUE]; + $data[] = [new IntegerData(DataDefinition::create('integer')), 1.5, FALSE]; + $data[] = [new IntegerData(DataDefinition::create('integer')), 'test', FALSE]; + $data[] = [new StringData(DataDefinition::create('string')), 'test', TRUE]; // It is odd that 1 is a valid string. // $data[] = [$this->getMock('Drupal\Core\TypedData\Type\StringInterface'), 1, FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\StringInterface'), [], FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'http://www.drupal.org', TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'https://www.drupal.org', TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'Invalid', FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'entity:node/1', TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'base:', TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'base:node', TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'internal:', TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'public://', FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'public://foo.png', TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'private://', FALSE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'private://foo.png', TRUE]; - $data[] = [$this->getMock('Drupal\Core\TypedData\Type\UriInterface'), 'drupal.org', FALSE]; + $data[] = [new StringData(DataDefinition::create('string')), [], FALSE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'http://www.drupal.org', TRUE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'https://www.drupal.org', TRUE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'Invalid', FALSE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'entity:node/1', TRUE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'base:', TRUE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'base:node', TRUE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'internal:', TRUE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'public://', FALSE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'public://foo.png', TRUE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'private://', FALSE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'private://foo.png', TRUE]; + $data[] = [new Uri(DataDefinition::create('uri')), 'drupal.org', FALSE]; return $data; }