minor #12015 [Validator] Simplified testing of violations (webmozart)

This PR was merged into the 2.3 branch.

Discussion
----------

[Validator] Simplified testing of violations

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I simplified the assertion of violations in preparation of a replacement PR for #7276.

Commits
-------

8e5537b [Validator] Simplified testing of violations
This commit is contained in:
Fabien Potencier 2014-09-25 11:38:09 +02:00
commit 87123f6e1d
36 changed files with 516 additions and 329 deletions

View File

@ -159,7 +159,10 @@ class UniqueEntityValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($entity2, $constraint);
$this->assertViolation('myMessage', array(), 'property.path.name', 'Foo');
$this->buildViolation('myMessage')
->atPath('property.path.name')
->setInvalidValue('Foo')
->assertRaised();
}
public function testValidateCustomErrorPath()
@ -179,7 +182,10 @@ class UniqueEntityValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($entity2, $constraint);
$this->assertViolation('myMessage', array(), 'property.path.bar', 'Foo');
$this->buildViolation('myMessage')
->atPath('property.path.bar')
->setInvalidValue('Foo')
->assertRaised();
}
public function testValidateUniquenessWithNull()
@ -227,7 +233,10 @@ class UniqueEntityValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($entity2, $constraint);
$this->assertViolation('myMessage', array(), 'property.path.name', 'Foo');
$this->buildViolation('myMessage')
->atPath('property.path.name')
->setInvalidValue('Foo')
->assertRaised();
}
public function testValidateUniquenessUsingCustomRepositoryMethod()
@ -321,7 +330,10 @@ class UniqueEntityValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($associated2, $constraint);
$this->assertViolation('myMessage', array(), 'property.path.single', 1);
$this->buildViolation('myMessage')
->atPath('property.path.single')
->setInvalidValue(1)
->assertRaised();
}
public function testAssociatedEntityWithNull()

View File

@ -219,10 +219,12 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($form, new Form());
$this->assertViolation('invalid_message_key', array(
'{{ value }}' => 'foo',
'{{ foo }}' => 'bar',
), 'property.path', 'foo', null, Form::ERR_INVALID);
$this->buildViolation('invalid_message_key')
->setParameter('{{ value }}', 'foo')
->setParameter('{{ foo }}', 'bar')
->setInvalidValue('foo')
->setCode(Form::ERR_INVALID)
->assertRaised();
}
public function testAddInvalidErrorEvenIfNoValidationGroups()
@ -251,10 +253,12 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($form, new Form());
$this->assertViolation('invalid_message_key', array(
'{{ value }}' => 'foo',
'{{ foo }}' => 'bar',
), 'property.path', 'foo', null, Form::ERR_INVALID);
$this->buildViolation('invalid_message_key')
->setParameter('{{ value }}', 'foo')
->setParameter('{{ foo }}', 'bar')
->setInvalidValue('foo')
->setCode(Form::ERR_INVALID)
->assertRaised();
}
public function testDontValidateConstraintsIfNotSynchronized()
@ -283,9 +287,11 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($form, new Form());
$this->assertViolation('invalid_message_key', array(
'{{ value }}' => 'foo',
), 'property.path','foo', null, Form::ERR_INVALID);
$this->buildViolation('invalid_message_key')
->setParameter('{{ value }}', 'foo')
->setInvalidValue('foo')
->setCode(Form::ERR_INVALID)
->assertRaised();
}
// https://github.com/symfony/symfony/issues/4359
@ -537,9 +543,10 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($form, new Form());
$this->assertViolation('Extra!', array(
'{{ extra_fields }}' => 'foo',
), 'property.path', array('foo' => 'bar'));
$this->buildViolation('Extra!')
->setParameter('{{ extra_fields }}', 'foo')
->setInvalidValue(array('foo' => 'bar'))
->assertRaised();
}
/**

View File

@ -84,11 +84,11 @@ abstract class AbstractComparisonValidatorTestCase extends AbstractConstraintVal
$this->validator->validate($dirtyValue, $constraint);
$this->assertViolation('Constraint Message', array(
'{{ value }}' => $dirtyValueAsString,
'{{ compared_value }}' => $comparedValueString,
'{{ compared_value_type }}' => $comparedValueType,
));
$this->buildViolation('Constraint Message')
->setParameter('{{ value }}', $dirtyValueAsString)
->setParameter('{{ compared_value }}', $comparedValueString)
->setParameter('{{ compared_value_type }}', $comparedValueType)
->assertRaised();
}
/**

View File

@ -13,8 +13,7 @@ namespace Symfony\Component\Validator\Tests\Constraints;
use Symfony\Component\Validator\ConstraintValidatorInterface;
use Symfony\Component\Validator\ConstraintViolation;
use Symfony\Component\Validator\Context\ExecutionContext;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
use Symfony\Component\Validator\ExecutionContextInterface;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Mapping\PropertyMetadata;
use Symfony\Component\Validator\Tests\Fixtures\StubGlobalExecutionContext;
@ -80,6 +79,19 @@ abstract class AbstractConstraintValidatorTest extends \PHPUnit_Framework_TestCa
->getMock();
}
/**
* @param $message
* @param array $parameters
* @param string $propertyPath
* @param string $invalidValue
* @param null $plural
* @param null $code
*
* @return ConstraintViolation
*
* @deprecated To be removed in Symfony 3.0. Use
* {@link buildViolation()} instead.
*/
protected function createViolation($message, array $parameters = array(), $propertyPath = 'property.path', $invalidValue = 'InvalidValue', $plural = null, $code = null)
{
return new ConstraintViolation(
@ -169,14 +181,34 @@ abstract class AbstractConstraintValidatorTest extends \PHPUnit_Framework_TestCa
$this->assertCount(0, $this->context->getViolations());
}
/**
* @param $message
* @param array $parameters
* @param string $propertyPath
* @param string $invalidValue
* @param null $plural
* @param null $code
*
* @deprecated To be removed in Symfony 3.0. Use
* {@link buildViolation()} instead.
*/
protected function assertViolation($message, array $parameters = array(), $propertyPath = 'property.path', $invalidValue = 'InvalidValue', $plural = null, $code = null)
{
$violations = $this->context->getViolations();
$this->assertCount(1, $violations);
$this->assertEquals($this->createViolation($message, $parameters, $propertyPath, $invalidValue, $plural, $code), $violations[0]);
$this->buildViolation($message)
->setParameters($parameters)
->atPath($propertyPath)
->setInvalidValue($invalidValue)
->setCode($code)
->setPlural($plural)
->assertRaised();
}
/**
* @param array $expected
*
* @deprecated To be removed in Symfony 3.0. Use
* {@link buildViolation()} instead.
*/
protected function assertViolations(array $expected)
{
$violations = $this->context->getViolations();
@ -190,5 +222,137 @@ abstract class AbstractConstraintValidatorTest extends \PHPUnit_Framework_TestCa
}
}
/**
* @param $message
*
* @return ConstraintViolationAssertion
*/
protected function buildViolation($message)
{
return new ConstraintViolationAssertion($this->context, $message);
}
abstract protected function createValidator();
}
/**
* @internal
*/
class ConstraintViolationAssertion
{
/**
* @var ExecutionContextInterface
*/
private $context;
/**
* @var ConstraintViolationAssertion[]
*/
private $assertions;
private $message;
private $parameters = array();
private $invalidValue = 'InvalidValue';
private $propertyPath = 'property.path';
private $translationDomain;
private $plural;
private $code;
public function __construct(ExecutionContextInterface $context, $message, array $assertions = array())
{
$this->context = $context;
$this->message = $message;
$this->assertions = $assertions;
}
public function atPath($path)
{
$this->propertyPath = $path;
return $this;
}
public function setParameter($key, $value)
{
$this->parameters[$key] = $value;
return $this;
}
public function setParameters(array $parameters)
{
$this->parameters = $parameters;
return $this;
}
public function setTranslationDomain($translationDomain)
{
$this->translationDomain = $translationDomain;
return $this;
}
public function setInvalidValue($invalidValue)
{
$this->invalidValue = $invalidValue;
return $this;
}
public function setPlural($number)
{
$this->plural = $number;
return $this;
}
public function setCode($code)
{
$this->code = $code;
return $this;
}
public function buildNextViolation($message)
{
$assertions = $this->assertions;
$assertions[] = $this;
return new self($this->context, $message, $assertions);
}
public function assertRaised()
{
$expected = array();
foreach ($this->assertions as $assertion) {
$expected[] = $assertion->getViolation();
}
$expected[] = $this->getViolation();
$violations = iterator_to_array($this->context->getViolations());
\PHPUnit_Framework_Assert::assertCount(count($expected), $violations);
reset($violations);
foreach ($expected as $violation) {
\PHPUnit_Framework_Assert::assertEquals($violation, current($violations));
next($violations);
}
}
private function getViolation()
{
return new ConstraintViolation(
null,
$this->message,
$this->parameters,
$this->context->getRoot(),
$this->propertyPath,
$this->invalidValue,
$this->plural,
$this->code
);
}
}

View File

@ -46,10 +46,9 @@ class BlankValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation(
'myMessage',
array('{{ value }}' => $valueAsString)
);
$this->buildViolation('myMessage')
->setParameter('{{ value }}', $valueAsString)
->assertRaised();
}
public function getInvalidValues()

View File

@ -64,9 +64,9 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($object, $constraint);
$this->assertViolation('My message', array(
'{{ value }}' => 'foobar',
));
$this->buildViolation('My message')
->setParameter('{{ value }}', 'foobar')
->assertRaised();
}
public function testSingleMethodExplicitName()
@ -76,9 +76,9 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($object, $constraint);
$this->assertViolation('My message', array(
'{{ value }}' => 'foobar',
));
$this->buildViolation('My message')
->setParameter('{{ value }}', 'foobar')
->assertRaised();
}
public function testMultipleMethods()
@ -88,14 +88,11 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($object, $constraint);
$this->assertViolations(array(
$this->createViolation('My message', array(
'{{ value }}' => 'foobar',
)),
$this->createViolation('Static message', array(
'{{ value }}' => 'baz',
)),
));
$this->buildViolation('My message')
->setParameter('{{ value }}', 'foobar')
->buildNextViolation('Static message')
->setParameter('{{ value }}', 'baz')
->assertRaised();
}
public function testMultipleMethodsExplicitName()
@ -107,14 +104,11 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($object, $constraint);
$this->assertViolations(array(
$this->createViolation('My message', array(
'{{ value }}' => 'foobar',
)),
$this->createViolation('Static message', array(
'{{ value }}' => 'baz',
)),
));
$this->buildViolation('My message')
->setParameter('{{ value }}', 'foobar')
->buildNextViolation('Static message')
->setParameter('{{ value }}', 'baz')
->assertRaised();
}
public function testSingleStaticMethod()
@ -126,9 +120,9 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($object, $constraint);
$this->assertViolation('Callback message', array(
'{{ value }}' => 'foobar',
));
$this->buildViolation('Callback message')
->setParameter('{{ value }}', 'foobar')
->assertRaised();
}
public function testSingleStaticMethodExplicitName()
@ -140,9 +134,9 @@ class CallbackValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($object, $constraint);
$this->assertViolation('Callback message', array(
'{{ value }}' => 'foobar',
));
$this->buildViolation('Callback message')
->setParameter('{{ value }}', 'foobar')
->assertRaised();
}
/**

View File

@ -57,9 +57,9 @@ class CardSchemeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($number, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => is_string($number) ? '"'.$number.'"' : $number,
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', is_string($number) ? '"'.$number.'"' : $number)
->assertRaised();
}
public function getValidNumbers()

View File

@ -138,9 +138,9 @@ class ChoiceValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate('baz', $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"baz"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"baz"')
->assertRaised();
}
public function testInvalidChoiceMultiple()
@ -153,9 +153,9 @@ class ChoiceValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(array('foo', 'baz'), $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"baz"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"baz"')
->assertRaised();
}
public function testTooFewChoices()
@ -173,9 +173,11 @@ class ChoiceValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ limit }}' => 2,
), 'property.path', $value, 2);
$this->buildViolation('myMessage')
->setParameter('{{ limit }}', 2)
->setInvalidValue($value)
->setPlural(2)
->assertRaised();
}
public function testTooManyChoices()
@ -193,9 +195,11 @@ class ChoiceValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ limit }}' => 2,
), 'property.path', $value, 2);
$this->buildViolation('myMessage')
->setParameter('{{ limit }}', 2)
->setInvalidValue($value)
->setPlural(2)
->assertRaised();
}
public function testNonStrict()
@ -233,9 +237,9 @@ class ChoiceValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate('2', $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"2"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"2"')
->assertRaised();
}
public function testNonStrictWithMultipleChoices()
@ -262,8 +266,8 @@ class ChoiceValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(array(2, '3'), $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"3"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"3"')
->assertRaised();
}
}

View File

@ -136,9 +136,11 @@ abstract class CollectionValidatorTest extends AbstractConstraintValidatorTest
'extraFieldsMessage' => 'myMessage',
)));
$this->assertViolation('myMessage', array(
'{{ field }}' => '"baz"',
), 'property.path[baz]', 6);
$this->buildViolation('myMessage')
->setParameter('{{ field }}', '"baz"')
->atPath('property.path[baz]')
->setInvalidValue(6)
->assertRaised();
}
// bug fix
@ -195,9 +197,11 @@ abstract class CollectionValidatorTest extends AbstractConstraintValidatorTest
'missingFieldsMessage' => 'myMessage',
)));
$this->assertViolation('myMessage', array(
'{{ field }}' => '"foo"',
), 'property.path[foo]', null);
$this->buildViolation('myMessage')
->setParameter('{{ field }}', '"foo"')
->atPath('property.path[foo]')
->setInvalidValue(null)
->assertRaised();
}
public function testMissingFieldsAllowed()
@ -305,9 +309,11 @@ abstract class CollectionValidatorTest extends AbstractConstraintValidatorTest
'missingFieldsMessage' => 'myMessage',
)));
$this->assertViolation('myMessage', array(
'{{ field }}' => '"foo"',
), 'property.path[foo]', null);
$this->buildViolation('myMessage')
->setParameter('{{ field }}', '"foo"')
->atPath('property.path[foo]')
->setInvalidValue(null)
->assertRaised();
}
public function testRequiredFieldSingleConstraint()

View File

@ -121,10 +121,12 @@ abstract class CountValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ count }}' => count($value),
'{{ limit }}' => 4,
), 'property.path', $value, 4);
$this->buildViolation('myMessage')
->setParameter('{{ count }}', count($value))
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->assertRaised();
}
/**
@ -139,10 +141,12 @@ abstract class CountValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ count }}' => count($value),
'{{ limit }}' => 4,
), 'property.path', $value, 4);
$this->buildViolation('myMessage')
->setParameter('{{ count }}', count($value))
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->assertRaised();
}
/**
@ -158,10 +162,12 @@ abstract class CountValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ count }}' => count($value),
'{{ limit }}' => 4,
), 'property.path', $value, 4);
$this->buildViolation('myMessage')
->setParameter('{{ count }}', count($value))
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->assertRaised();
}
public function testDefaultOption()

View File

@ -81,9 +81,9 @@ class CountryValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($country, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$country.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$country.'"')
->assertRaised();
}
public function getInvalidCountries()

View File

@ -95,9 +95,9 @@ class CurrencyValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($currency, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$currency.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$currency.'"')
->assertRaised();
}
public function getInvalidCurrencies()

View File

@ -80,9 +80,9 @@ class DateTimeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($dateTime, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$dateTime.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$dateTime.'"')
->assertRaised();
}
public function getInvalidDateTimes()

View File

@ -80,9 +80,9 @@ class DateValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($date, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$date.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$date.'"')
->assertRaised();
}
public function getInvalidDates()

View File

@ -73,9 +73,9 @@ class EmailValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($email, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$email.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$email.'"')
->assertRaised();
}
public function getInvalidEmails()

View File

@ -43,8 +43,8 @@ class FalseValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(true, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => 'true',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', 'true')
->assertRaised();
}
}

View File

@ -28,8 +28,8 @@ class FileValidatorPathTest extends FileValidatorTest
$this->validator->validate('foobar', $constraint);
$this->assertViolation('myMessage', array(
'{{ file }}' => '"foobar"',
));
$this->buildViolation('myMessage')
->setParameter('{{ file }}', '"foobar"')
->assertRaised();
}
}

View File

@ -162,12 +162,12 @@ abstract class FileValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($this->getFile($this->path), $constraint);
$this->assertViolation('myMessage', array(
'{{ limit }}' => $limitAsString,
'{{ size }}' => $sizeAsString,
'{{ suffix }}' => $suffix,
'{{ file }}' => '"'.$this->path.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ limit }}', $limitAsString)
->setParameter('{{ size }}', $sizeAsString)
->setParameter('{{ suffix }}', $suffix)
->setParameter('{{ file }}', '"'.$this->path.'"')
->assertRaised();
}
public function provideMaxSizeNotExceededTests()
@ -231,18 +231,15 @@ abstract class FileValidatorTest extends AbstractConstraintValidatorTest
$file = $this
->getMockBuilder('Symfony\Component\HttpFoundation\File\File')
->setConstructorArgs(array(__DIR__.'/Fixtures/foo'))
->getMock()
;
->getMock();
$file
->expects($this->once())
->method('getPathname')
->will($this->returnValue($this->path))
;
->will($this->returnValue($this->path));
$file
->expects($this->once())
->method('getMimeType')
->will($this->returnValue('image/jpg'))
;
->will($this->returnValue('image/jpg'));
$constraint = new File(array(
'mimeTypes' => array('image/png', 'image/jpg'),
@ -258,18 +255,15 @@ abstract class FileValidatorTest extends AbstractConstraintValidatorTest
$file = $this
->getMockBuilder('Symfony\Component\HttpFoundation\File\File')
->setConstructorArgs(array(__DIR__.'/Fixtures/foo'))
->getMock()
;
->getMock();
$file
->expects($this->once())
->method('getPathname')
->will($this->returnValue($this->path))
;
->will($this->returnValue($this->path));
$file
->expects($this->once())
->method('getMimeType')
->will($this->returnValue('image/jpg'))
;
->will($this->returnValue('image/jpg'));
$constraint = new File(array(
'mimeTypes' => array('image/*'),
@ -285,18 +279,15 @@ abstract class FileValidatorTest extends AbstractConstraintValidatorTest
$file = $this
->getMockBuilder('Symfony\Component\HttpFoundation\File\File')
->setConstructorArgs(array(__DIR__.'/Fixtures/foo'))
->getMock()
;
->getMock();
$file
->expects($this->once())
->method('getPathname')
->will($this->returnValue($this->path))
;
->will($this->returnValue($this->path));
$file
->expects($this->once())
->method('getMimeType')
->will($this->returnValue('application/pdf'))
;
->will($this->returnValue('application/pdf'));
$constraint = new File(array(
'mimeTypes' => array('image/png', 'image/jpg'),
@ -305,11 +296,11 @@ abstract class FileValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($file, $constraint);
$this->assertViolation('myMessage', array(
'{{ type }}' => '"application/pdf"',
'{{ types }}' => '"image/png", "image/jpg"',
'{{ file }}' => '"'.$this->path.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ type }}', '"application/pdf"')
->setParameter('{{ types }}', '"image/png", "image/jpg"')
->setParameter('{{ file }}', '"'.$this->path.'"')
->assertRaised();
}
public function testInvalidWildcardMimeType()
@ -317,18 +308,15 @@ abstract class FileValidatorTest extends AbstractConstraintValidatorTest
$file = $this
->getMockBuilder('Symfony\Component\HttpFoundation\File\File')
->setConstructorArgs(array(__DIR__.'/Fixtures/foo'))
->getMock()
;
->getMock();
$file
->expects($this->once())
->method('getPathname')
->will($this->returnValue($this->path))
;
->will($this->returnValue($this->path));
$file
->expects($this->once())
->method('getMimeType')
->will($this->returnValue('application/pdf'))
;
->will($this->returnValue('application/pdf'));
$constraint = new File(array(
'mimeTypes' => array('image/*', 'image/jpg'),
@ -337,11 +325,11 @@ abstract class FileValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($file, $constraint);
$this->assertViolation('myMessage', array(
'{{ type }}' => '"application/pdf"',
'{{ types }}' => '"image/*", "image/jpg"',
'{{ file }}' => '"'.$this->path.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ type }}', '"application/pdf"')
->setParameter('{{ types }}', '"image/*", "image/jpg"')
->setParameter('{{ file }}', '"'.$this->path.'"')
->assertRaised();
}
/**
@ -358,7 +346,9 @@ abstract class FileValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($file, $constraint);
$this->assertViolation('myMessage', $params);
$this->buildViolation('myMessage')
->setParameters($params)
->assertRaised();
}
public function uploadedFileErrorProvider()

View File

@ -158,9 +158,9 @@ class IbanValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($iban, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$iban.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$iban.'"')
->assertRaised();
}
public function getInvalidIbans()

View File

@ -81,10 +81,10 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($this->image, $constraint);
$this->assertViolation('myMessage', array(
'{{ width }}' => '2',
'{{ min_width }}' => '3',
));
$this->buildViolation('myMessage')
->setParameter('{{ width }}', '2')
->setParameter('{{ min_width }}', '3')
->assertRaised();
}
public function testWidthTooBig()
@ -96,10 +96,10 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($this->image, $constraint);
$this->assertViolation('myMessage', array(
'{{ width }}' => '2',
'{{ max_width }}' => '1',
));
$this->buildViolation('myMessage')
->setParameter('{{ width }}', '2')
->setParameter('{{ max_width }}', '1')
->assertRaised();
}
public function testHeightTooSmall()
@ -111,10 +111,10 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($this->image, $constraint);
$this->assertViolation('myMessage', array(
'{{ height }}' => '2',
'{{ min_height }}' => '3',
));
$this->buildViolation('myMessage')
->setParameter('{{ height }}', '2')
->setParameter('{{ min_height }}', '3')
->assertRaised();
}
public function testHeightTooBig()
@ -126,10 +126,10 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($this->image, $constraint);
$this->assertViolation('myMessage', array(
'{{ height }}' => '2',
'{{ max_height }}' => '1',
));
$this->buildViolation('myMessage')
->setParameter('{{ height }}', '2')
->setParameter('{{ max_height }}', '1')
->assertRaised();
}
/**

View File

@ -145,9 +145,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidIpsV4()
@ -177,9 +177,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidPrivateIpsV4()
@ -203,9 +203,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidReservedIpsV4()
@ -229,9 +229,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidPublicIpsV4()
@ -251,9 +251,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidIpsV6()
@ -287,9 +287,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidPrivateIpsV6()
@ -313,9 +313,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidReservedIpsV6()
@ -338,9 +338,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidPublicIpsV6()
@ -360,9 +360,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidIpsAll()
@ -382,9 +382,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidPrivateIpsAll()
@ -404,9 +404,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidReservedIpsAll()
@ -426,9 +426,9 @@ class IpValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($ip, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$ip.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$ip.'"')
->assertRaised();
}
public function getInvalidPublicIpsAll()

View File

@ -170,9 +170,9 @@ class IsbnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($isbn, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$isbn.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$isbn.'"')
->assertRaised();
}
/**
@ -199,9 +199,9 @@ class IsbnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($isbn, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$isbn.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$isbn.'"')
->assertRaised();
}
/**
@ -232,8 +232,8 @@ class IsbnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($isbn, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$isbn.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$isbn.'"')
->assertRaised();
}
}

View File

@ -140,9 +140,9 @@ class IssnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($issn, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$issn.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$issn.'"')
->assertRaised();
}
/**
@ -157,9 +157,9 @@ class IssnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($issn, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$issn.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$issn.'"')
->assertRaised();
}
/**
@ -185,9 +185,9 @@ class IssnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($issn, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$issn.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$issn.'"')
->assertRaised();
}
/**
@ -201,9 +201,9 @@ class IssnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($issn, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$issn.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$issn.'"')
->assertRaised();
}
/**
@ -217,8 +217,8 @@ class IssnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($issn, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$issn.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$issn.'"')
->assertRaised();
}
}

View File

@ -81,9 +81,9 @@ class LanguageValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($language, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$language.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$language.'"')
->assertRaised();
}
public function getInvalidLanguages()

View File

@ -150,10 +150,12 @@ class LengthValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$value.'"',
'{{ limit }}' => 4,
), 'property.path', $value, 4);
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$value.'"')
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->assertRaised();
}
/**
@ -172,10 +174,12 @@ class LengthValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$value.'"',
'{{ limit }}' => 4,
), 'property.path', $value, 4);
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$value.'"')
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->assertRaised();
}
/**
@ -195,10 +199,12 @@ class LengthValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$value.'"',
'{{ limit }}' => 4,
), 'property.path', $value, 4);
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$value.'"')
->setParameter('{{ limit }}', 4)
->setInvalidValue($value)
->setPlural(4)
->assertRaised();
}
public function testConstraintGetDefaultOption()

View File

@ -83,9 +83,9 @@ class LocaleValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($locale, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$locale.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$locale.'"')
->assertRaised();
}
public function getInvalidLocales()

View File

@ -80,9 +80,9 @@ class LuhnValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($number, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$number.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$number.'"')
->assertRaised();
}
public function getInvalidNumbers()

View File

@ -50,9 +50,9 @@ class NotBlankValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(null, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => 'null',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', 'null')
->assertRaised();
}
public function testBlankIsInvalid()
@ -63,9 +63,9 @@ class NotBlankValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate('', $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '""',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '""')
->assertRaised();
}
public function testFalseIsInvalid()
@ -76,9 +76,9 @@ class NotBlankValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(false, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => 'false',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', 'false')
->assertRaised();
}
public function testEmptyArrayIsInvalid()
@ -89,8 +89,8 @@ class NotBlankValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(array(), $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => 'array',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', 'array')
->assertRaised();
}
}

View File

@ -49,6 +49,6 @@ class NotNullValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(null, $constraint);
$this->assertViolation('myMessage');
$this->buildViolation('myMessage')->assertRaised();
}
}

View File

@ -39,9 +39,9 @@ class NullValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => $valueAsString,
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', $valueAsString)
->assertRaised();
}
public function getInvalidValues()

View File

@ -107,10 +107,10 @@ class RangeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => $value,
'{{ limit }}' => 10,
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', $value)
->setParameter('{{ limit }}', 10)
->assertRaised();
}
/**
@ -125,10 +125,10 @@ class RangeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => $value,
'{{ limit }}' => 20,
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', $value)
->setParameter('{{ limit }}', 20)
->assertRaised();
}
/**
@ -145,10 +145,10 @@ class RangeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMaxMessage', array(
'{{ value }}' => $value,
'{{ limit }}' => 20,
));
$this->buildViolation('myMaxMessage')
->setParameter('{{ value }}', $value)
->setParameter('{{ limit }}', 20)
->assertRaised();
}
/**
@ -165,10 +165,10 @@ class RangeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMinMessage', array(
'{{ value }}' => $value,
'{{ limit }}' => 10,
));
$this->buildViolation('myMinMessage')
->setParameter('{{ value }}', $value)
->setParameter('{{ limit }}', 10)
->assertRaised();
}
public function getInvalidValues()
@ -192,10 +192,10 @@ class RangeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(9, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => 9,
'{{ limit }}' => 10,
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', 9)
->setParameter('{{ limit }}', 10)
->assertRaised();
}
public function testMaxMessageIsSet()
@ -208,10 +208,10 @@ class RangeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(21, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => 21,
'{{ limit }}' => 20,
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', 21)
->setParameter('{{ limit }}', 20)
->assertRaised();
}
public function testNonNumeric()
@ -222,8 +222,8 @@ class RangeValidatorTest extends AbstractConstraintValidatorTest
'invalidMessage' => 'myMessage',
)));
$this->assertViolation('myMessage', array(
'{{ value }}' => '"abcd"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"abcd"')
->assertRaised();
}
}

View File

@ -76,9 +76,9 @@ class RegexValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$value.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$value.'"')
->assertRaised();
}
public function getInvalidValues()

View File

@ -80,9 +80,9 @@ class TimeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($time, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$time.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$time.'"')
->assertRaised();
}
public function getInvalidTimes()

View File

@ -43,8 +43,8 @@ class TrueValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate(false, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => 'false',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', 'false')
->assertRaised();
}
}

View File

@ -50,10 +50,10 @@ class TypeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate('', $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '""',
'{{ type }}' => 'integer',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '""')
->setParameter('{{ type }}', 'integer')
->assertRaised();
}
/**
@ -117,10 +117,10 @@ class TypeValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($value, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => $valueAsString,
'{{ type }}' => $type,
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', $valueAsString)
->setParameter('{{ type }}', $type)
->assertRaised();
}
public function getInvalidValues()

View File

@ -13,7 +13,6 @@ namespace Symfony\Component\Validator\Tests\Constraints;
use Symfony\Component\Validator\Constraints\Url;
use Symfony\Component\Validator\Constraints\UrlValidator;
use Symfony\Component\Validator\Validation;
class UrlValidatorTest extends AbstractConstraintValidatorTest
{
@ -119,9 +118,9 @@ class UrlValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($url, $constraint);
$this->assertViolation('myMessage', array(
'{{ value }}' => '"'.$url.'"',
));
$this->buildViolation('myMessage')
->setParameter('{{ value }}', '"'.$url.'"')
->assertRaised();
}
public function getInvalidUrls()