From 3227303dab98b04a2797df8184fd018200534050 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 9 Sep 2020 18:58:25 +0200 Subject: [PATCH] allow consumers to mock all methods --- .../Test/ConstraintValidatorTestCase.php | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php b/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php index 3d1fc81c9a..1b4a151826 100644 --- a/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php +++ b/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php @@ -112,10 +112,44 @@ abstract class ConstraintValidatorTestCase extends TestCase $context->setNode($this->value, $this->object, $this->metadata, $this->propertyPath); $context->setConstraint($this->constraint); + $contextualValidator = $this->getMockBuilder(AssertingContextualValidator::class) + ->setMethods([ + 'atPath', + 'validate', + 'validateProperty', + 'validatePropertyValue', + 'getViolations', + ]) + ->getMock(); + $contextualValidator->expects($this->any()) + ->method('atPath') + ->willReturnCallback(function ($path) use ($contextualValidator) { + return $contextualValidator->doAtPath($path); + }); + $contextualValidator->expects($this->any()) + ->method('validate') + ->willReturnCallback(function ($value, $constraints = null, $groups = null) use ($contextualValidator) { + return $contextualValidator->doValidate($value, $constraints, $groups); + }); + $contextualValidator->expects($this->any()) + ->method('validateProperty') + ->willReturnCallback(function ($object, $propertyName, $groups = null) use ($contextualValidator) { + return $contextualValidator->validateProperty($object, $propertyName, $groups); + }); + $contextualValidator->expects($this->any()) + ->method('validatePropertyValue') + ->willReturnCallback(function ($objectOrClass, $propertyName, $value, $groups = null) use ($contextualValidator) { + return $contextualValidator->doValidatePropertyValue($objectOrClass, $propertyName, $value, $groups); + }); + $contextualValidator->expects($this->any()) + ->method('getViolations') + ->willReturnCallback(function () use ($contextualValidator) { + return $contextualValidator->doGetViolations(); + }); $validator->expects($this->any()) ->method('inContext') ->with($context) - ->willReturn($this->getMockBuilder(AssertingContextualValidator::class)->setMethods(null)->getMock()); + ->willReturn($contextualValidator); return $context; } @@ -353,6 +387,10 @@ class AssertingContextualValidator implements ContextualValidatorInterface private $expectedValidate = []; public function atPath($path) + { + } + + public function doAtPath($path) { Assert::assertFalse($this->expectNoValidate, 'No validation calls have been expected.'); @@ -366,6 +404,10 @@ class AssertingContextualValidator implements ContextualValidatorInterface } public function validate($value, $constraints = null, $groups = null) + { + } + + public function doValidate($value, $constraints = null, $groups = null) { Assert::assertFalse($this->expectNoValidate, 'No validation calls have been expected.'); @@ -379,11 +421,19 @@ class AssertingContextualValidator implements ContextualValidatorInterface } public function validateProperty($object, $propertyName, $groups = null) + { + } + + public function doValidateProperty($object, $propertyName, $groups = null) { return $this; } public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null) + { + } + + public function doValidatePropertyValue($objectOrClass, $propertyName, $value, $groups = null) { return $this; } @@ -392,6 +442,10 @@ class AssertingContextualValidator implements ContextualValidatorInterface { } + public function doGetViolations() + { + } + public function expectNoValidate() { $this->expectNoValidate = true;