allow consumers to mock all methods

This commit is contained in:
Christian Flothmann 2020-09-09 18:58:25 +02:00
parent 81b954b753
commit 3227303dab

View File

@ -112,10 +112,44 @@ abstract class ConstraintValidatorTestCase extends TestCase
$context->setNode($this->value, $this->object, $this->metadata, $this->propertyPath); $context->setNode($this->value, $this->object, $this->metadata, $this->propertyPath);
$context->setConstraint($this->constraint); $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()) $validator->expects($this->any())
->method('inContext') ->method('inContext')
->with($context) ->with($context)
->willReturn($this->getMockBuilder(AssertingContextualValidator::class)->setMethods(null)->getMock()); ->willReturn($contextualValidator);
return $context; return $context;
} }
@ -353,6 +387,10 @@ class AssertingContextualValidator implements ContextualValidatorInterface
private $expectedValidate = []; private $expectedValidate = [];
public function atPath($path) public function atPath($path)
{
}
public function doAtPath($path)
{ {
Assert::assertFalse($this->expectNoValidate, 'No validation calls have been expected.'); 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 validate($value, $constraints = null, $groups = null)
{
}
public function doValidate($value, $constraints = null, $groups = null)
{ {
Assert::assertFalse($this->expectNoValidate, 'No validation calls have been expected.'); 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 validateProperty($object, $propertyName, $groups = null)
{
}
public function doValidateProperty($object, $propertyName, $groups = null)
{ {
return $this; return $this;
} }
public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null) public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null)
{
}
public function doValidatePropertyValue($objectOrClass, $propertyName, $value, $groups = null)
{ {
return $this; return $this;
} }
@ -392,6 +442,10 @@ class AssertingContextualValidator implements ContextualValidatorInterface
{ {
} }
public function doGetViolations()
{
}
public function expectNoValidate() public function expectNoValidate()
{ {
$this->expectNoValidate = true; $this->expectNoValidate = true;