[Validator] Deprecated ConstraintValidator methods setMessage(), getMessageTemplate() and getMessageParameters()
Had to refactor the validation tests at the same time and fixed various small bugs while doing so.
This commit is contained in:
parent
0417282740
commit
9153f0e569
@ -300,6 +300,8 @@ To get the diff between two versions, go to https://github.com/symfony/symfony/c
|
|||||||
* changed default value for `extraFieldsMessage` and `missingFieldsMessage`
|
* changed default value for `extraFieldsMessage` and `missingFieldsMessage`
|
||||||
in Collection constraint
|
in Collection constraint
|
||||||
* made ExecutionContext immutable
|
* made ExecutionContext immutable
|
||||||
|
* deprecated Constraint methods `setMessage`, `getMessageTemplate` and
|
||||||
|
`getMessageParameters`
|
||||||
|
|
||||||
### Yaml
|
### Yaml
|
||||||
|
|
||||||
|
@ -141,3 +141,37 @@ UPGRADE FROM 2.0 to 2.1
|
|||||||
$builder->add('tags', 'collection', array('prototype' => '__proto__'));
|
$builder->add('tags', 'collection', array('prototype' => '__proto__'));
|
||||||
|
|
||||||
// results in the name "__proto__" in the template
|
// results in the name "__proto__" in the template
|
||||||
|
|
||||||
|
* The methods `setMessage`, `getMessageTemplate` and `getMessageParameters`
|
||||||
|
in Constraint were deprecated
|
||||||
|
|
||||||
|
If you have implemented custom validators, you should use either of the
|
||||||
|
`addViolation*` methods of the context object instead.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
public function isValid($value, Constraint $constraint)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
if (!$valid) {
|
||||||
|
$this->setMessage($constraint->message, array(
|
||||||
|
'{{ value }}' => $value,
|
||||||
|
));
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
public function isValid($value, Constraint $constraint)
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
if (!$valid) {
|
||||||
|
$this->context->addViolation($constraint->message, array(
|
||||||
|
'{{ value }}' => $value,
|
||||||
|
));
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -102,7 +102,7 @@ class UniqueEntityValidator extends ConstraintValidator
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->context->addNestedViolationAt($fields[0], $constraint->message, array(), $criteria[$fields[0]]);
|
$this->context->addViolationAtRelativePath($fields[0], $constraint->message, array(), $criteria[$fields[0]]);
|
||||||
|
|
||||||
return true; // all true, we added the violation already!
|
return true; // all true, we added the violation already!
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ class UserPasswordValidator extends ConstraintValidator
|
|||||||
$encoder = $this->encoderFactory->getEncoder($user);
|
$encoder = $this->encoderFactory->getEncoder($user);
|
||||||
|
|
||||||
if (!$encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt())) {
|
if (!$encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt())) {
|
||||||
$this->setMessage($constraint->message);
|
$this->context->addViolation($constraint->message);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -24,12 +24,18 @@ abstract class ConstraintValidator implements ConstraintValidatorInterface
|
|||||||
* @var ExecutionContext
|
* @var ExecutionContext
|
||||||
*/
|
*/
|
||||||
protected $context;
|
protected $context;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
|
*
|
||||||
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
private $messageTemplate;
|
private $messageTemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array
|
* @var array
|
||||||
|
*
|
||||||
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
private $messageParameters;
|
private $messageParameters;
|
||||||
|
|
||||||
@ -46,7 +52,7 @@ abstract class ConstraintValidator implements ConstraintValidatorInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
* @api
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
public function getMessageTemplate()
|
public function getMessageTemplate()
|
||||||
{
|
{
|
||||||
@ -56,7 +62,7 @@ abstract class ConstraintValidator implements ConstraintValidatorInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
* @api
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
public function getMessageParameters()
|
public function getMessageParameters()
|
||||||
{
|
{
|
||||||
@ -64,11 +70,15 @@ abstract class ConstraintValidator implements ConstraintValidatorInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api
|
* Wrapper for $this->context->addViolation()
|
||||||
|
*
|
||||||
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
protected function setMessage($template, array $parameters = array())
|
protected function setMessage($template, array $parameters = array())
|
||||||
{
|
{
|
||||||
$this->messageTemplate = $template;
|
$this->messageTemplate = $template;
|
||||||
$this->messageParameters = $parameters;
|
$this->messageParameters = $parameters;
|
||||||
|
|
||||||
|
$this->context->addViolation($template, $parameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
namespace Symfony\Component\Validator;
|
namespace Symfony\Component\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||||
|
*
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
interface ConstraintValidatorInterface
|
interface ConstraintValidatorInterface
|
||||||
@ -34,18 +36,4 @@ interface ConstraintValidatorInterface
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
function isValid($value, Constraint $constraint);
|
function isValid($value, Constraint $constraint);
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*
|
|
||||||
* @api
|
|
||||||
*/
|
|
||||||
function getMessageTemplate();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array
|
|
||||||
*
|
|
||||||
* @api
|
|
||||||
*/
|
|
||||||
function getMessageParameters();
|
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,21 @@ class ConstraintViolation
|
|||||||
$this->invalidValue = $invalidValue;
|
$this->invalidValue = $invalidValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function __toString()
|
||||||
|
{
|
||||||
|
$class = (string) (is_object($this->root) ? get_class($this->root) : $this->root);
|
||||||
|
$propertyPath = (string) $this->propertyPath;
|
||||||
|
|
||||||
|
if ('' !== $propertyPath && '[' !== $propertyPath[0] && '' !== $class) {
|
||||||
|
$class .= '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $class . $propertyPath . ":\n " . $this->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*
|
*
|
||||||
@ -62,7 +77,15 @@ class ConstraintViolation
|
|||||||
*/
|
*/
|
||||||
public function getMessage()
|
public function getMessage()
|
||||||
{
|
{
|
||||||
return strtr($this->messageTemplate, $this->messageParameters);
|
$parameters = $this->messageParameters;
|
||||||
|
|
||||||
|
foreach ($parameters as $i => $parameter) {
|
||||||
|
if (is_array($parameter)) {
|
||||||
|
$parameters[$i] = 'Array';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return strtr($this->messageTemplate, $parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getRoot()
|
public function getRoot()
|
||||||
|
@ -47,17 +47,7 @@ class ConstraintViolationList implements \IteratorAggregate, \Countable, \ArrayA
|
|||||||
$string = '';
|
$string = '';
|
||||||
|
|
||||||
foreach ($this->violations as $violation) {
|
foreach ($this->violations as $violation) {
|
||||||
$root = $violation->getRoot();
|
$string .= $violation . "\n";
|
||||||
$class = (string) (is_object($root) ? get_class($root) : $root);
|
|
||||||
$propertyPath = (string) $violation->getPropertyPath();
|
|
||||||
if ('' !== $propertyPath && '[' !== $propertyPath[0] && '' !== $class) {
|
|
||||||
$class .= '.';
|
|
||||||
}
|
|
||||||
$string .= <<<EOF
|
|
||||||
{$class}{$propertyPath}:
|
|
||||||
{$violation->getMessage()}
|
|
||||||
|
|
||||||
EOF;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $string;
|
return $string;
|
||||||
|
@ -32,7 +32,7 @@ class BlankValidator extends ConstraintValidator
|
|||||||
public function isValid($value, Constraint $constraint)
|
public function isValid($value, Constraint $constraint)
|
||||||
{
|
{
|
||||||
if ('' !== $value && null !== $value) {
|
if ('' !== $value && null !== $value) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ class CallbackValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
$methods = $constraint->methods;
|
$methods = $constraint->methods;
|
||||||
|
$success = true;
|
||||||
|
|
||||||
foreach ($methods as $method) {
|
foreach ($methods as $method) {
|
||||||
if (is_array($method) || $method instanceof \Closure) {
|
if (is_array($method) || $method instanceof \Closure) {
|
||||||
@ -55,16 +56,16 @@ class CallbackValidator extends ConstraintValidator
|
|||||||
throw new ConstraintDefinitionException(sprintf('"%s::%s" targeted by Callback constraint is not a valid callable', $method[0], $method[1]));
|
throw new ConstraintDefinitionException(sprintf('"%s::%s" targeted by Callback constraint is not a valid callable', $method[0], $method[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
call_user_func($method, $object, $this->context);
|
$success = call_user_func($method, $object, $this->context) && $success;
|
||||||
} else {
|
} else {
|
||||||
if (!method_exists($object, $method)) {
|
if (!method_exists($object, $method)) {
|
||||||
throw new ConstraintDefinitionException(sprintf('Method "%s" targeted by Callback constraint does not exist', $method));
|
throw new ConstraintDefinitionException(sprintf('Method "%s" targeted by Callback constraint does not exist', $method));
|
||||||
}
|
}
|
||||||
|
|
||||||
$object->$method($this->context);
|
$success = $object->$method($this->context) && $success;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return $success;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ class ChoiceValidator extends ConstraintValidator
|
|||||||
if ($constraint->multiple) {
|
if ($constraint->multiple) {
|
||||||
foreach ($value as $_value) {
|
foreach ($value as $_value) {
|
||||||
if (!in_array($_value, $choices, $constraint->strict)) {
|
if (!in_array($_value, $choices, $constraint->strict)) {
|
||||||
$this->setMessage($constraint->multipleMessage, array('{{ value }}' => $_value));
|
$this->context->addViolation($constraint->multipleMessage, array('{{ value }}' => $_value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -75,18 +75,18 @@ class ChoiceValidator extends ConstraintValidator
|
|||||||
$count = count($value);
|
$count = count($value);
|
||||||
|
|
||||||
if ($constraint->min !== null && $count < $constraint->min) {
|
if ($constraint->min !== null && $count < $constraint->min) {
|
||||||
$this->setMessage($constraint->minMessage, array('{{ limit }}' => $constraint->min));
|
$this->context->addViolation($constraint->minMessage, array('{{ limit }}' => $constraint->min));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($constraint->max !== null && $count > $constraint->max) {
|
if ($constraint->max !== null && $count > $constraint->max) {
|
||||||
$this->setMessage($constraint->maxMessage, array('{{ limit }}' => $constraint->max));
|
$this->context->addViolation($constraint->maxMessage, array('{{ limit }}' => $constraint->max));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} elseif (!in_array($value, $choices, $constraint->strict)) {
|
} elseif (!in_array($value, $choices, $constraint->strict)) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -68,8 +68,8 @@ class CollectionValidator extends ConstraintValidator
|
|||||||
$walker->walkConstraint($constr, $value[$field], $group, $propertyPath.'['.$field.']');
|
$walker->walkConstraint($constr, $value[$field], $group, $propertyPath.'['.$field.']');
|
||||||
}
|
}
|
||||||
} elseif (!$fieldConstraint instanceof Optional && !$constraint->allowMissingFields) {
|
} elseif (!$fieldConstraint instanceof Optional && !$constraint->allowMissingFields) {
|
||||||
$this->context->addNestedViolationAt('['.$field.']', $constraint->missingFieldsMessage, array(
|
$this->context->addViolationAtRelativePath('['.$field.']', $constraint->missingFieldsMessage, array(
|
||||||
'{{ field }}' => '"'.$field.'"'
|
'{{ field }}' => $field
|
||||||
), null);
|
), null);
|
||||||
$valid = false;
|
$valid = false;
|
||||||
}
|
}
|
||||||
@ -78,8 +78,8 @@ class CollectionValidator extends ConstraintValidator
|
|||||||
if (!$constraint->allowExtraFields) {
|
if (!$constraint->allowExtraFields) {
|
||||||
foreach ($value as $field => $fieldValue) {
|
foreach ($value as $field => $fieldValue) {
|
||||||
if (!isset($constraint->fields[$field])) {
|
if (!isset($constraint->fields[$field])) {
|
||||||
$this->context->addNestedViolationAt('['.$field.']', $constraint->extraFieldsMessage, array(
|
$this->context->addViolationAtRelativePath('['.$field.']', $constraint->extraFieldsMessage, array(
|
||||||
'{{ field }}' => '"'.$field.'"'
|
'{{ field }}' => $field
|
||||||
), $fieldValue);
|
), $fieldValue);
|
||||||
$valid = false;
|
$valid = false;
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ class CountryValidator extends ConstraintValidator
|
|||||||
$value = (string) $value;
|
$value = (string) $value;
|
||||||
|
|
||||||
if (!in_array($value, \Symfony\Component\Locale\Locale::getCountries())) {
|
if (!in_array($value, \Symfony\Component\Locale\Locale::getCountries())) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -48,12 +48,12 @@ class DateValidator extends ConstraintValidator
|
|||||||
|
|
||||||
$value = (string) $value;
|
$value = (string) $value;
|
||||||
|
|
||||||
if (!preg_match(static::PATTERN, $value, $matches)) {
|
if (!preg_match(static::PATTERN, $value, $matches) || !checkdate($matches[2], $matches[3], $matches[1])) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return checkdate($matches[2], $matches[3], $matches[1]);
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ class EmailValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$valid) {
|
if (!$valid) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ class FalseValidator extends ConstraintValidator
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setMessage($constraint->message);
|
$this->context->addViolation($constraint->message);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -44,15 +44,15 @@ class FileValidator extends ConstraintValidator
|
|||||||
case UPLOAD_ERR_INI_SIZE:
|
case UPLOAD_ERR_INI_SIZE:
|
||||||
$maxSize = UploadedFile::getMaxFilesize();
|
$maxSize = UploadedFile::getMaxFilesize();
|
||||||
$maxSize = $constraint->maxSize ? min($maxSize, $constraint->maxSize) : $maxSize;
|
$maxSize = $constraint->maxSize ? min($maxSize, $constraint->maxSize) : $maxSize;
|
||||||
$this->setMessage($constraint->uploadIniSizeErrorMessage, array('{{ limit }}' => $maxSize.' bytes'));
|
$this->context->addViolation($constraint->uploadIniSizeErrorMessage, array('{{ limit }}' => $maxSize.' bytes'));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
case UPLOAD_ERR_FORM_SIZE:
|
case UPLOAD_ERR_FORM_SIZE:
|
||||||
$this->setMessage($constraint->uploadFormSizeErrorMessage);
|
$this->context->addViolation($constraint->uploadFormSizeErrorMessage);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
$this->setMessage($constraint->uploadErrorMessage);
|
$this->context->addViolation($constraint->uploadErrorMessage);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -65,13 +65,13 @@ class FileValidator extends ConstraintValidator
|
|||||||
$path = $value instanceof FileObject ? $value->getPathname() : (string) $value;
|
$path = $value instanceof FileObject ? $value->getPathname() : (string) $value;
|
||||||
|
|
||||||
if (!is_file($path)) {
|
if (!is_file($path)) {
|
||||||
$this->setMessage($constraint->notFoundMessage, array('{{ file }}' => $path));
|
$this->context->addViolation($constraint->notFoundMessage, array('{{ file }}' => $path));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_readable($path)) {
|
if (!is_readable($path)) {
|
||||||
$this->setMessage($constraint->notReadableMessage, array('{{ file }}' => $path));
|
$this->context->addViolation($constraint->notReadableMessage, array('{{ file }}' => $path));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -94,7 +94,7 @@ class FileValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($size > $limit) {
|
if ($size > $limit) {
|
||||||
$this->setMessage($constraint->maxSizeMessage, array(
|
$this->context->addViolation($constraint->maxSizeMessage, array(
|
||||||
'{{ size }}' => $size.$suffix,
|
'{{ size }}' => $size.$suffix,
|
||||||
'{{ limit }}' => $limit.$suffix,
|
'{{ limit }}' => $limit.$suffix,
|
||||||
'{{ file }}' => $path,
|
'{{ file }}' => $path,
|
||||||
@ -128,7 +128,7 @@ class FileValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (false === $valid) {
|
if (false === $valid) {
|
||||||
$this->setMessage($constraint->mimeTypesMessage, array(
|
$this->context->addViolation($constraint->mimeTypesMessage, array(
|
||||||
'{{ type }}' => '"'.$mime.'"',
|
'{{ type }}' => '"'.$mime.'"',
|
||||||
'{{ types }}' => '"'.implode('", "', $mimeTypes) .'"',
|
'{{ types }}' => '"'.implode('", "', $mimeTypes) .'"',
|
||||||
'{{ file }}' => $path,
|
'{{ file }}' => $path,
|
||||||
|
@ -40,7 +40,7 @@ class ImageValidator extends FileValidator
|
|||||||
|
|
||||||
$size = @getimagesize($value);
|
$size = @getimagesize($value);
|
||||||
if (empty($size) || ($size[0] === 0) || ($size[1] === 0)) {
|
if (empty($size) || ($size[0] === 0) || ($size[1] === 0)) {
|
||||||
$this->setMessage($constraint->sizeNotDetectedMessage);
|
$this->context->addViolation($constraint->sizeNotDetectedMessage);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -54,7 +54,7 @@ class ImageValidator extends FileValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($width < $constraint->minWidth) {
|
if ($width < $constraint->minWidth) {
|
||||||
$this->setMessage($constraint->minWidthMessage, array(
|
$this->context->addViolation($constraint->minWidthMessage, array(
|
||||||
'{{ width }}' => $width,
|
'{{ width }}' => $width,
|
||||||
'{{ min_width }}' => $constraint->minWidth
|
'{{ min_width }}' => $constraint->minWidth
|
||||||
));
|
));
|
||||||
@ -69,7 +69,7 @@ class ImageValidator extends FileValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($width > $constraint->maxWidth) {
|
if ($width > $constraint->maxWidth) {
|
||||||
$this->setMessage($constraint->maxWidthMessage, array(
|
$this->context->addViolation($constraint->maxWidthMessage, array(
|
||||||
'{{ width }}' => $width,
|
'{{ width }}' => $width,
|
||||||
'{{ max_width }}' => $constraint->maxWidth
|
'{{ max_width }}' => $constraint->maxWidth
|
||||||
));
|
));
|
||||||
@ -84,7 +84,7 @@ class ImageValidator extends FileValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($height < $constraint->minHeight) {
|
if ($height < $constraint->minHeight) {
|
||||||
$this->setMessage($constraint->minHeightMessage, array(
|
$this->context->addViolation($constraint->minHeightMessage, array(
|
||||||
'{{ height }}' => $height,
|
'{{ height }}' => $height,
|
||||||
'{{ min_height }}' => $constraint->minHeight
|
'{{ min_height }}' => $constraint->minHeight
|
||||||
));
|
));
|
||||||
@ -99,7 +99,7 @@ class ImageValidator extends FileValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($height > $constraint->maxHeight) {
|
if ($height > $constraint->maxHeight) {
|
||||||
$this->setMessage($constraint->maxHeightMessage, array(
|
$this->context->addViolation($constraint->maxHeightMessage, array(
|
||||||
'{{ height }}' => $height,
|
'{{ height }}' => $height,
|
||||||
'{{ max_height }}' => $constraint->maxHeight
|
'{{ max_height }}' => $constraint->maxHeight
|
||||||
));
|
));
|
||||||
|
@ -98,7 +98,7 @@ class IpValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!filter_var($value, FILTER_VALIDATE_IP, $flag)) {
|
if (!filter_var($value, FILTER_VALIDATE_IP, $flag)) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ class LanguageValidator extends ConstraintValidator
|
|||||||
$value = (string) $value;
|
$value = (string) $value;
|
||||||
|
|
||||||
if (!in_array($value, \Symfony\Component\Locale\Locale::getLanguages())) {
|
if (!in_array($value, \Symfony\Component\Locale\Locale::getLanguages())) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ class LocaleValidator extends ConstraintValidator
|
|||||||
$value = (string) $value;
|
$value = (string) $value;
|
||||||
|
|
||||||
if (!in_array($value, \Symfony\Component\Locale\Locale::getLocales())) {
|
if (!in_array($value, \Symfony\Component\Locale\Locale::getLocales())) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ class MaxLengthValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($length > $constraint->limit) {
|
if ($length > $constraint->limit) {
|
||||||
$this->setMessage($constraint->message, array(
|
$this->context->addViolation($constraint->message, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->limit,
|
'{{ limit }}' => $constraint->limit,
|
||||||
));
|
));
|
||||||
|
@ -36,7 +36,7 @@ class MaxValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!is_numeric($value)) {
|
if (!is_numeric($value)) {
|
||||||
$this->setMessage($constraint->invalidMessage, array(
|
$this->context->addViolation($constraint->invalidMessage, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->limit,
|
'{{ limit }}' => $constraint->limit,
|
||||||
));
|
));
|
||||||
@ -45,7 +45,7 @@ class MaxValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($value > $constraint->limit) {
|
if ($value > $constraint->limit) {
|
||||||
$this->setMessage($constraint->message, array(
|
$this->context->addViolation($constraint->message, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->limit,
|
'{{ limit }}' => $constraint->limit,
|
||||||
));
|
));
|
||||||
|
@ -51,7 +51,7 @@ class MinLengthValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($length < $constraint->limit) {
|
if ($length < $constraint->limit) {
|
||||||
$this->setMessage($constraint->message, array(
|
$this->context->addViolation($constraint->message, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->limit,
|
'{{ limit }}' => $constraint->limit,
|
||||||
));
|
));
|
||||||
|
@ -36,7 +36,7 @@ class MinValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!is_numeric($value)) {
|
if (!is_numeric($value)) {
|
||||||
$this->setMessage($constraint->invalidMessage, array(
|
$this->context->addViolation($constraint->invalidMessage, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->limit,
|
'{{ limit }}' => $constraint->limit,
|
||||||
));
|
));
|
||||||
@ -45,7 +45,7 @@ class MinValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($value < $constraint->limit) {
|
if ($value < $constraint->limit) {
|
||||||
$this->setMessage($constraint->message, array(
|
$this->context->addViolation($constraint->message, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->limit,
|
'{{ limit }}' => $constraint->limit,
|
||||||
));
|
));
|
||||||
|
@ -32,7 +32,7 @@ class NotBlankValidator extends ConstraintValidator
|
|||||||
public function isValid($value, Constraint $constraint)
|
public function isValid($value, Constraint $constraint)
|
||||||
{
|
{
|
||||||
if (false === $value || (empty($value) && '0' != $value)) {
|
if (false === $value || (empty($value) && '0' != $value)) {
|
||||||
$this->setMessage($constraint->message);
|
$this->context->addViolation($constraint->message);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ class NotNullValidator extends ConstraintValidator
|
|||||||
public function isValid($value, Constraint $constraint)
|
public function isValid($value, Constraint $constraint)
|
||||||
{
|
{
|
||||||
if (null === $value) {
|
if (null === $value) {
|
||||||
$this->setMessage($constraint->message);
|
$this->context->addViolation($constraint->message);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ class NullValidator extends ConstraintValidator
|
|||||||
public function isValid($value, Constraint $constraint)
|
public function isValid($value, Constraint $constraint)
|
||||||
{
|
{
|
||||||
if (null !== $value) {
|
if (null !== $value) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ class RegexValidator extends ConstraintValidator
|
|||||||
$value = (string) $value;
|
$value = (string) $value;
|
||||||
|
|
||||||
if ($constraint->match xor preg_match($constraint->pattern, $value)) {
|
if ($constraint->match xor preg_match($constraint->pattern, $value)) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ class SizeLengthValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($constraint->min == $constraint->max && $length != $constraint->max) {
|
if ($constraint->min == $constraint->max && $length != $constraint->max) {
|
||||||
$this->setMessage($constraint->exactMessage, array(
|
$this->context->addViolation($constraint->exactMessage, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->max,
|
'{{ limit }}' => $constraint->max,
|
||||||
));
|
));
|
||||||
@ -60,7 +60,7 @@ class SizeLengthValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($length > $constraint->max) {
|
if ($length > $constraint->max) {
|
||||||
$this->setMessage($constraint->maxMessage, array(
|
$this->context->addViolation($constraint->maxMessage, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->max,
|
'{{ limit }}' => $constraint->max,
|
||||||
));
|
));
|
||||||
@ -69,7 +69,7 @@ class SizeLengthValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($length < $constraint->min) {
|
if ($length < $constraint->min) {
|
||||||
$this->setMessage($constraint->minMessage, array(
|
$this->context->addViolation($constraint->minMessage, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->min,
|
'{{ limit }}' => $constraint->min,
|
||||||
));
|
));
|
||||||
|
@ -36,7 +36,7 @@ class SizeValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!is_numeric($value)) {
|
if (!is_numeric($value)) {
|
||||||
$this->setMessage($constraint->invalidMessage, array(
|
$this->context->addViolation($constraint->invalidMessage, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
));
|
));
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ class SizeValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($value > $constraint->max) {
|
if ($value > $constraint->max) {
|
||||||
$this->setMessage($constraint->maxMessage, array(
|
$this->context->addViolation($constraint->maxMessage, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->max,
|
'{{ limit }}' => $constraint->max,
|
||||||
));
|
));
|
||||||
@ -53,7 +53,7 @@ class SizeValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($value < $constraint->min) {
|
if ($value < $constraint->min) {
|
||||||
$this->setMessage($constraint->minMessage, array(
|
$this->context->addViolation($constraint->minMessage, array(
|
||||||
'{{ value }}' => $value,
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => $constraint->min,
|
'{{ limit }}' => $constraint->min,
|
||||||
));
|
));
|
||||||
|
@ -49,7 +49,7 @@ class TimeValidator extends ConstraintValidator
|
|||||||
$value = (string) $value;
|
$value = (string) $value;
|
||||||
|
|
||||||
if (!preg_match(static::PATTERN, $value)) {
|
if (!preg_match(static::PATTERN, $value)) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ class TrueValidator extends ConstraintValidator
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setMessage($constraint->message);
|
$this->context->addViolation($constraint->message);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -48,8 +48,8 @@ class TypeValidator extends ConstraintValidator
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setMessage($constraint->message, array(
|
$this->context->addViolation($constraint->message, array(
|
||||||
'{{ value }}' => is_object($value) ? get_class($value) : is_array($value) ? 'Array' : (string) $value,
|
'{{ value }}' => is_object($value) ? get_class($value) : (is_array($value) ? 'Array' : (string) $value),
|
||||||
'{{ type }}' => $constraint->type,
|
'{{ type }}' => $constraint->type,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ class UrlValidator extends ConstraintValidator
|
|||||||
$pattern = sprintf(static::PATTERN, implode('|', $constraint->protocols));
|
$pattern = sprintf(static::PATTERN, implode('|', $constraint->protocols));
|
||||||
|
|
||||||
if (!preg_match($pattern, $value)) {
|
if (!preg_match($pattern, $value)) {
|
||||||
$this->setMessage($constraint->message, array('{{ value }}' => $value));
|
$this->context->addViolation($constraint->message, array('{{ value }}' => $value));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ class ExecutionContext
|
|||||||
* @param array $params The parameters parsed into the error message.
|
* @param array $params The parameters parsed into the error message.
|
||||||
* @param mixed $invalidValue The invalid, validated value.
|
* @param mixed $invalidValue The invalid, validated value.
|
||||||
*/
|
*/
|
||||||
public function addViolationAt($propertyPath, $message, array $params = array(), $invalidValue = null)
|
public function addViolationAtPath($propertyPath, $message, array $params = array(), $invalidValue = null)
|
||||||
{
|
{
|
||||||
$this->globalContext->addViolation(new ConstraintViolation(
|
$this->globalContext->addViolation(new ConstraintViolation(
|
||||||
$message,
|
$message,
|
||||||
@ -93,27 +93,21 @@ class ExecutionContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a violation at the child of the current validation graph node with
|
* Adds a violation at the validation graph node with the given property
|
||||||
* the given property path.
|
* path relative to the current property path.
|
||||||
*
|
*
|
||||||
* @param string $childPropertyPath The property path of the child node.
|
* @param string $relativePath The relative property path for the violation.
|
||||||
* @param string $message The error message.
|
* @param string $message The error message.
|
||||||
* @param array $params The parameters parsed into the error message.
|
* @param array $params The parameters parsed into the error message.
|
||||||
* @param mixed $invalidValue The invalid, validated value.
|
* @param mixed $invalidValue The invalid, validated value.
|
||||||
*/
|
*/
|
||||||
public function addNestedViolationAt($childPropertyPath, $message, array $params = array(), $invalidValue = null)
|
public function addViolationAtRelativePath($relativePath, $message, array $params = array(), $invalidValue = null)
|
||||||
{
|
{
|
||||||
$propertyPath = $this->propertyPath;
|
|
||||||
|
|
||||||
if ('' !== $propertyPath && '' !== $childPropertyPath && '[' !== $childPropertyPath[0]) {
|
|
||||||
$propertyPath .= '.';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->globalContext->addViolation(new ConstraintViolation(
|
$this->globalContext->addViolation(new ConstraintViolation(
|
||||||
$message,
|
$message,
|
||||||
$params,
|
$params,
|
||||||
$this->globalContext->getRoot(),
|
$this->globalContext->getRoot(),
|
||||||
$propertyPath . $childPropertyPath,
|
$this->getAbsolutePropertyPath($relativePath),
|
||||||
// check using func_num_args() to allow passing null values
|
// check using func_num_args() to allow passing null values
|
||||||
func_num_args() === 4 ? $invalidValue : $this->value
|
func_num_args() === 4 ? $invalidValue : $this->value
|
||||||
));
|
));
|
||||||
@ -139,6 +133,15 @@ class ExecutionContext
|
|||||||
return $this->propertyPath;
|
return $this->propertyPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAbsolutePropertyPath($relativePath)
|
||||||
|
{
|
||||||
|
if ('' !== $this->propertyPath && '' !== $relativePath && '[' !== $relativePath[0]) {
|
||||||
|
return $this->propertyPath . '.' . $relativePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->propertyPath . $relativePath;
|
||||||
|
}
|
||||||
|
|
||||||
public function getCurrentClass()
|
public function getCurrentClass()
|
||||||
{
|
{
|
||||||
return $this->class;
|
return $this->class;
|
||||||
|
@ -178,17 +178,6 @@ class GraphWalker
|
|||||||
);
|
);
|
||||||
|
|
||||||
$validator->initialize($localContext);
|
$validator->initialize($localContext);
|
||||||
|
$validator->isValid($value, $constraint);
|
||||||
if (!$validator->isValid($value, $constraint)) {
|
|
||||||
$messageTemplate = $validator->getMessageTemplate();
|
|
||||||
$messageParams = $validator->getMessageParameters();
|
|
||||||
|
|
||||||
// Somewhat ugly hack: Don't add a violation if no message is set.
|
|
||||||
// This is required if the validator added its violations directly
|
|
||||||
// to the globalContext already
|
|
||||||
if (!empty($messageTemplate)) {
|
|
||||||
$localContext->addViolation($messageTemplate, $messageParams);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Tests\Component\Validator;
|
||||||
|
|
||||||
|
use Symfony\Component\Validator\ConstraintViolation;
|
||||||
|
|
||||||
|
class ConstraintViolationTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
public function testToStringHandlesArrays()
|
||||||
|
{
|
||||||
|
$violation = new ConstraintViolation(
|
||||||
|
'{{ value }}',
|
||||||
|
array('{{ value }}' => array(1, 2, 3)),
|
||||||
|
'Root',
|
||||||
|
'property.path',
|
||||||
|
null
|
||||||
|
);
|
||||||
|
|
||||||
|
$expected = <<<EOF
|
||||||
|
Root.property.path:
|
||||||
|
Array
|
||||||
|
EOF;
|
||||||
|
|
||||||
|
$this->assertSame($expected, (string) $violation);
|
||||||
|
}
|
||||||
|
}
|
@ -15,25 +15,32 @@ use Symfony\Component\Validator\GlobalExecutionContext;
|
|||||||
|
|
||||||
use Symfony\Component\Validator\ExecutionContext;
|
use Symfony\Component\Validator\ExecutionContext;
|
||||||
use Symfony\Component\Validator\Constraints\Min;
|
use Symfony\Component\Validator\Constraints\Min;
|
||||||
|
use Symfony\Component\Validator\Constraints\Max;
|
||||||
use Symfony\Component\Validator\Constraints\All;
|
use Symfony\Component\Validator\Constraints\All;
|
||||||
use Symfony\Component\Validator\Constraints\AllValidator;
|
use Symfony\Component\Validator\Constraints\AllValidator;
|
||||||
|
|
||||||
class AllValidatorTest extends \PHPUnit_Framework_TestCase
|
class AllValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
protected $validator;
|
|
||||||
protected $walker;
|
protected $walker;
|
||||||
protected $context;
|
protected $context;
|
||||||
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
$this->walker = $this->getMock('Symfony\Component\Validator\GraphWalker', array(), array(), '', false);
|
$this->walker = $this->getMock('Symfony\Component\Validator\GraphWalker', array(), array(), '', false);
|
||||||
$metadataFactory = $this->getMock('Symfony\Component\Validator\Mapping\ClassMetadataFactoryInterface');
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$globalContext = new GlobalExecutionContext('Root', $this->walker, $metadataFactory);
|
|
||||||
|
|
||||||
$this->context = new ExecutionContext($globalContext, null, 'foo', 'MyGroup', null, null);
|
|
||||||
|
|
||||||
$this->validator = new AllValidator();
|
$this->validator = new AllValidator();
|
||||||
$this->validator->initialize($this->context);
|
$this->validator->initialize($this->context);
|
||||||
|
|
||||||
|
$this->context->expects($this->any())
|
||||||
|
->method('getGraphWalker')
|
||||||
|
->will($this->returnValue($this->walker));
|
||||||
|
$this->context->expects($this->any())
|
||||||
|
->method('getGroup')
|
||||||
|
->will($this->returnValue('MyGroup'));
|
||||||
|
$this->context->expects($this->any())
|
||||||
|
->method('getPropertyPath')
|
||||||
|
->will($this->returnValue('foo.bar'));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
@ -48,11 +55,13 @@ class AllValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertTrue($this->validator->isValid(null, new All(new Min(4))));
|
$this->assertTrue($this->validator->isValid(null, new All(new Min(4))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testThrowsExceptionIfNotTraversable()
|
public function testThrowsExceptionIfNotTraversable()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
$this->validator->isValid('foo.barbar', new All(new Min(4)));
|
||||||
|
|
||||||
$this->validator->isValid('foobar', new All(new Min(4)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -62,12 +71,17 @@ class AllValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$constraint = new Min(4);
|
$constraint = new Min(4);
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
foreach ($array as $key => $value) {
|
foreach ($array as $key => $value) {
|
||||||
$this->walker->expects($this->once())
|
$this->walker->expects($this->at($i++))
|
||||||
->method('walkConstraint')
|
->method('walkConstraint')
|
||||||
->with($this->equalTo($constraint), $this->equalTo($value), $this->equalTo('MyGroup'), $this->equalTo('foo['.$key.']'));
|
->with($constraint, $value, 'MyGroup', 'foo.bar['.$key.']');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($array, new All($constraint)));
|
$this->assertTrue($this->validator->isValid($array, new All($constraint)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,27 +90,32 @@ class AllValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testWalkMultipleConstraints($array)
|
public function testWalkMultipleConstraints($array)
|
||||||
{
|
{
|
||||||
$constraint = new Min(4);
|
$constraint1 = new Min(4);
|
||||||
// can only test for twice the same constraint because PHPUnits mocking
|
$constraint2 = new Max(6);
|
||||||
// can't test method calls with different arguments
|
|
||||||
$constraints = array($constraint, $constraint);
|
$constraints = array($constraint1, $constraint2);
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
foreach ($array as $key => $value) {
|
foreach ($array as $key => $value) {
|
||||||
$this->walker->expects($this->exactly(2))
|
$this->walker->expects($this->at($i++))
|
||||||
->method('walkConstraint')
|
->method('walkConstraint')
|
||||||
->with($this->equalTo($constraint), $this->equalTo($value), $this->equalTo('MyGroup'), $this->equalTo('foo['.$key.']'));
|
->with($constraint1, $value, 'MyGroup', 'foo.bar['.$key.']');
|
||||||
|
$this->walker->expects($this->at($i++))
|
||||||
|
->method('walkConstraint')
|
||||||
|
->with($constraint2, $value, 'MyGroup', 'foo.bar['.$key.']');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($array, new All($constraints)));
|
$this->assertTrue($this->validator->isValid($array, new All($constraints)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getValidArguments()
|
public function getValidArguments()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
// can only test for one entry, because PHPUnits mocking does not allow
|
array(array(5, 6, 7)),
|
||||||
// to expect multiple method calls with different arguments
|
array(new \ArrayObject(array(5, 6, 7))),
|
||||||
array(array(1)),
|
|
||||||
array(new \ArrayObject(array(1))),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,34 +16,54 @@ use Symfony\Component\Validator\Constraints\BlankValidator;
|
|||||||
|
|
||||||
class BlankValidatorTest extends \PHPUnit_Framework_TestCase
|
class BlankValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new BlankValidator();
|
$this->validator = new BlankValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Blank()));
|
$this->assertTrue($this->validator->isValid(null, new Blank()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testBlankIsValid()
|
public function testBlankIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Blank()));
|
$this->assertTrue($this->validator->isValid('', new Blank()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidValues
|
* @dataProvider getInvalidValues
|
||||||
*/
|
*/
|
||||||
public function testInvalidValues($date)
|
public function testInvalidValues($value)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($date, new Blank()));
|
$constraint = new Blank(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $value,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidValues()
|
public function getInvalidValues()
|
||||||
@ -55,17 +75,4 @@ class BlankValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array(1234),
|
array(1234),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Blank(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,9 @@ class CallbackValidatorTest_Class
|
|||||||
{
|
{
|
||||||
public static function validateStatic($object, ExecutionContext $context)
|
public static function validateStatic($object, ExecutionContext $context)
|
||||||
{
|
{
|
||||||
$context->addViolation('Static message', array('parameter'), 'invalidValue');
|
$context->addViolation('Static message', array('{{ value }}' => 'foobar'), 'invalidValue');
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,107 +32,93 @@ class CallbackValidatorTest_Object
|
|||||||
{
|
{
|
||||||
public function validateOne(ExecutionContext $context)
|
public function validateOne(ExecutionContext $context)
|
||||||
{
|
{
|
||||||
$context->addViolation('My message', array('parameter'), 'invalidValue');
|
$context->addViolation('My message', array('{{ value }}' => 'foobar'), 'invalidValue');
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateTwo(ExecutionContext $context)
|
public function validateTwo(ExecutionContext $context)
|
||||||
{
|
{
|
||||||
$context->addViolation('Other message', array('other parameter'), 'otherInvalidValue');
|
$context->addViolation('Other message', array('{{ value }}' => 'baz'), 'otherInvalidValue');
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CallbackValidatorTest extends \PHPUnit_Framework_TestCase
|
class CallbackValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
protected $validator;
|
|
||||||
protected $walker;
|
|
||||||
protected $context;
|
protected $context;
|
||||||
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
$this->walker = $this->getMock('Symfony\Component\Validator\GraphWalker', array(), array(), '', false);
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$metadataFactory = $this->getMock('Symfony\Component\Validator\Mapping\ClassMetadataFactoryInterface');
|
|
||||||
$globalContext = new GlobalExecutionContext('Root', $this->walker, $metadataFactory);
|
|
||||||
|
|
||||||
$this->context = new ExecutionContext($globalContext, 'value', 'foo.bar', 'Group', 'ClassName', 'propertyName');
|
|
||||||
$this->validator = new CallbackValidator();
|
$this->validator = new CallbackValidator();
|
||||||
$this->validator->initialize($this->context);
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
$this->validator = null;
|
|
||||||
$this->walker = null;
|
|
||||||
$this->context = null;
|
$this->context = null;
|
||||||
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Callback(array('foo'))));
|
$this->assertTrue($this->validator->isValid(null, new Callback(array('foo'))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCallbackSingleMethod()
|
public function testCallbackSingleMethod()
|
||||||
{
|
{
|
||||||
$object = new CallbackValidatorTest_Object();
|
$object = new CallbackValidatorTest_Object();
|
||||||
|
$constraint = new Callback(array('validateOne'));
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($object, new Callback(array('validateOne'))));
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
$violations = new ConstraintViolationList();
|
->with('My message', array(
|
||||||
$violations->add(new ConstraintViolation(
|
'{{ value }}' => 'foobar',
|
||||||
'My message',
|
|
||||||
array('parameter'),
|
|
||||||
'Root',
|
|
||||||
'foo.bar',
|
|
||||||
'invalidValue'
|
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertEquals($violations, $this->context->getViolations());
|
$this->assertFalse($this->validator->isValid($object, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCallbackSingleStaticMethod()
|
public function testCallbackSingleStaticMethod()
|
||||||
{
|
{
|
||||||
$object = new CallbackValidatorTest_Object();
|
$object = new CallbackValidatorTest_Object();
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($object, new Callback(array(
|
$this->context->expects($this->once())
|
||||||
array(__NAMESPACE__.'\CallbackValidatorTest_Class', 'validateStatic')
|
->method('addViolation')
|
||||||
))));
|
->with('Static message', array(
|
||||||
|
'{{ value }}' => 'foobar',
|
||||||
$violations = new ConstraintViolationList();
|
|
||||||
$violations->add(new ConstraintViolation(
|
|
||||||
'Static message',
|
|
||||||
array('parameter'),
|
|
||||||
'Root',
|
|
||||||
'foo.bar',
|
|
||||||
'invalidValue'
|
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertEquals($violations, $this->context->getViolations());
|
$this->assertFalse($this->validator->isValid($object, new Callback(array(
|
||||||
|
array(__CLASS__.'_Class', 'validateStatic')
|
||||||
|
))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCallbackMultipleMethods()
|
public function testCallbackMultipleMethods()
|
||||||
{
|
{
|
||||||
$object = new CallbackValidatorTest_Object();
|
$object = new CallbackValidatorTest_Object();
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($object, new Callback(array(
|
$this->context->expects($this->at(0))
|
||||||
|
->method('addViolation')
|
||||||
|
->with('My message', array(
|
||||||
|
'{{ value }}' => 'foobar',
|
||||||
|
));
|
||||||
|
$this->context->expects($this->at(1))
|
||||||
|
->method('addViolation')
|
||||||
|
->with('Other message', array(
|
||||||
|
'{{ value }}' => 'baz',
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($object, new Callback(array(
|
||||||
'validateOne', 'validateTwo'
|
'validateOne', 'validateTwo'
|
||||||
))));
|
))));
|
||||||
|
|
||||||
$violations = new ConstraintViolationList();
|
|
||||||
$violations->add(new ConstraintViolation(
|
|
||||||
'My message',
|
|
||||||
array('parameter'),
|
|
||||||
'Root',
|
|
||||||
'foo.bar',
|
|
||||||
'invalidValue'
|
|
||||||
));
|
|
||||||
$violations->add(new ConstraintViolation(
|
|
||||||
'Other message',
|
|
||||||
array('other parameter'),
|
|
||||||
'Root',
|
|
||||||
'foo.bar',
|
|
||||||
'otherInvalidValue'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertEquals($violations, $this->context->getViolations());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,6 +24,7 @@ function choice_callback()
|
|||||||
|
|
||||||
class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
public static function staticCallback()
|
public static function staticCallback()
|
||||||
@ -33,19 +34,24 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
$walker = $this->getMock('Symfony\Component\Validator\GraphWalker', array(), array(), '', false);
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$factory = $this->getMock('Symfony\Component\Validator\Mapping\ClassMetadataFactoryInterface');
|
|
||||||
$globalContext = new GlobalExecutionContext('root', $walker, $factory);
|
|
||||||
$context = new ExecutionContext($globalContext, null, null, null, __CLASS__, null);
|
|
||||||
$this->validator = new ChoiceValidator();
|
$this->validator = new ChoiceValidator();
|
||||||
$this->validator->initialize($context);
|
$this->validator->initialize($this->context);
|
||||||
|
|
||||||
|
$this->context->expects($this->any())
|
||||||
|
->method('getCurrentClass')
|
||||||
|
->will($this->returnValue(__CLASS__));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectArrayIfMultipleIsTrue()
|
public function testExpectArrayIfMultipleIsTrue()
|
||||||
{
|
{
|
||||||
$constraint = new Choice(array(
|
$constraint = new Choice(array(
|
||||||
@ -53,27 +59,30 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid('asdf', $constraint);
|
$this->validator->isValid('asdf', $constraint);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Choice(array('choices' => array('foo', 'bar')))));
|
$this->assertTrue($this->validator->isValid(null, new Choice(array('choices' => array('foo', 'bar')))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\ConstraintDefinitionException
|
||||||
|
*/
|
||||||
public function testChoicesOrCallbackExpected()
|
public function testChoicesOrCallbackExpected()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
|
|
||||||
|
|
||||||
$this->validator->isValid('foobar', new Choice());
|
$this->validator->isValid('foobar', new Choice());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\ConstraintDefinitionException
|
||||||
|
*/
|
||||||
public function testValidCallbackExpected()
|
public function testValidCallbackExpected()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
|
|
||||||
|
|
||||||
$this->validator->isValid('foobar', new Choice(array('callback' => 'abcd')));
|
$this->validator->isValid('foobar', new Choice(array('callback' => 'abcd')));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,6 +90,9 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$constraint = new Choice(array('choices' => array('foo', 'bar')));
|
$constraint = new Choice(array('choices' => array('foo', 'bar')));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,6 +100,9 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$constraint = new Choice(array('callback' => __NAMESPACE__.'\choice_callback'));
|
$constraint = new Choice(array('callback' => __NAMESPACE__.'\choice_callback'));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,6 +112,9 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
return array('foo', 'bar');
|
return array('foo', 'bar');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,6 +122,9 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$constraint = new Choice(array('callback' => array(__CLASS__, 'staticCallback')));
|
$constraint = new Choice(array('callback' => array(__CLASS__, 'staticCallback')));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,6 +132,9 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$constraint = new Choice(array('callback' => 'staticCallback'));
|
$constraint = new Choice(array('callback' => 'staticCallback'));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
$this->assertTrue($this->validator->isValid('bar', $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +145,9 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(array('baz', 'bar'), $constraint));
|
$this->assertTrue($this->validator->isValid(array('baz', 'bar'), $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,11 +158,13 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'message' => 'myMessage',
|
'message' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('baz', $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ value }}' => 'baz',
|
'{{ value }}' => 'baz',
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid('baz', $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInvalidChoiceMultiple()
|
public function testInvalidChoiceMultiple()
|
||||||
@ -146,11 +175,13 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(array('foo', 'baz'), $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ value }}' => 'baz',
|
'{{ value }}' => 'baz',
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid(array('foo', 'baz'), $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTooFewChoices()
|
public function testTooFewChoices()
|
||||||
@ -162,11 +193,13 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'minMessage' => 'myMessage',
|
'minMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(array('foo'), $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ limit }}' => 2,
|
'{{ limit }}' => 2,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid(array('foo'), $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTooManyChoices()
|
public function testTooManyChoices()
|
||||||
@ -178,36 +211,60 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'maxMessage' => 'myMessage',
|
'maxMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(array('foo', 'bar', 'moo'), $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ limit }}' => 2,
|
'{{ limit }}' => 2,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid(array('foo', 'bar', 'moo'), $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testStrictIsFalse()
|
public function testNonStrict()
|
||||||
{
|
{
|
||||||
$constraint = new Choice(array(
|
$constraint = new Choice(array(
|
||||||
'choices' => array(1, 2),
|
'choices' => array(1, 2),
|
||||||
'strict' => false,
|
'strict' => false,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('2', $constraint));
|
$this->assertTrue($this->validator->isValid('2', $constraint));
|
||||||
$this->assertTrue($this->validator->isValid(2, $constraint));
|
$this->assertTrue($this->validator->isValid(2, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testStrictIsTrue()
|
public function testStrictAllowsExactValue()
|
||||||
{
|
{
|
||||||
$constraint = new Choice(array(
|
$constraint = new Choice(array(
|
||||||
'choices' => array(1, 2),
|
'choices' => array(1, 2),
|
||||||
'strict' => true,
|
'strict' => true,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(2, $constraint));
|
$this->assertTrue($this->validator->isValid(2, $constraint));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testStrictDisallowsDifferentType()
|
||||||
|
{
|
||||||
|
$constraint = new Choice(array(
|
||||||
|
'choices' => array(1, 2),
|
||||||
|
'strict' => true,
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => '2',
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('2', $constraint));
|
$this->assertFalse($this->validator->isValid('2', $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testStrictIsFalseWhenMultipleChoices()
|
public function testNonStrictWithMultipleChoices()
|
||||||
{
|
{
|
||||||
$constraint = new Choice(array(
|
$constraint = new Choice(array(
|
||||||
'choices' => array(1, 2, 3),
|
'choices' => array(1, 2, 3),
|
||||||
@ -215,15 +272,25 @@ class ChoiceValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'strict' => false
|
'strict' => false
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(array('2', 3), $constraint));
|
$this->assertTrue($this->validator->isValid(array('2', 3), $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testStrictIsTrueWhenMultipleChoices()
|
public function testStrictWithMultipleChoices()
|
||||||
{
|
{
|
||||||
$constraint = new Choice(array(
|
$constraint = new Choice(array(
|
||||||
'choices' => array(1, 2, 3),
|
'choices' => array(1, 2, 3),
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
'strict' => true
|
'strict' => true,
|
||||||
|
'multipleMessage' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => '3',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(array(2, '3'), $constraint));
|
$this->assertFalse($this->validator->isValid(array(2, '3'), $constraint));
|
||||||
|
@ -25,35 +25,42 @@ use Symfony\Component\Validator\Constraints\CollectionValidator;
|
|||||||
|
|
||||||
abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
protected $validator;
|
|
||||||
protected $walker;
|
protected $walker;
|
||||||
protected $globalContext;
|
|
||||||
protected $context;
|
protected $context;
|
||||||
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
$this->walker = $this->getMock('Symfony\Component\Validator\GraphWalker', array(), array(), '', false);
|
$this->walker = $this->getMock('Symfony\Component\Validator\GraphWalker', array(), array(), '', false);
|
||||||
$metadataFactory = $this->getMock('Symfony\Component\Validator\Mapping\ClassMetadataFactoryInterface');
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
|
|
||||||
$this->globalContext = new GlobalExecutionContext('Root', $this->walker, $metadataFactory);
|
|
||||||
$this->context = new ExecutionContext($this->globalContext, 'value', 'bar', 'MyGroup', 'ClassName', 'propertyName');
|
|
||||||
|
|
||||||
$this->validator = new CollectionValidator();
|
$this->validator = new CollectionValidator();
|
||||||
$this->validator->initialize($this->context);
|
$this->validator->initialize($this->context);
|
||||||
|
|
||||||
|
$this->context->expects($this->any())
|
||||||
|
->method('getGraphWalker')
|
||||||
|
->will($this->returnValue($this->walker));
|
||||||
|
$this->context->expects($this->any())
|
||||||
|
->method('getGroup')
|
||||||
|
->will($this->returnValue('MyGroup'));
|
||||||
|
$this->context->expects($this->any())
|
||||||
|
->method('getPropertyPath')
|
||||||
|
->will($this->returnValue('foo.bar'));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
$this->validator = null;
|
|
||||||
$this->walker = null;
|
$this->walker = null;
|
||||||
$this->globalContext = null;
|
|
||||||
$this->context = null;
|
$this->context = null;
|
||||||
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract protected function prepareTestData(array $contents);
|
abstract protected function prepareTestData(array $contents);
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Collection(array('fields' => array(
|
$this->assertTrue($this->validator->isValid(null, new Collection(array('fields' => array(
|
||||||
'foo' => new Min(4),
|
'foo' => new Min(4),
|
||||||
)))));
|
)))));
|
||||||
@ -63,6 +70,9 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$data = $this->prepareTestData(array('foo' => 'foobar'));
|
$data = $this->prepareTestData(array('foo' => 'foobar'));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
||||||
'foo' => new Min(4),
|
'foo' => new Min(4),
|
||||||
))));
|
))));
|
||||||
@ -82,19 +92,27 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$constraint = new Min(4);
|
$constraint = new Min(4);
|
||||||
|
|
||||||
$array = array('foo' => 3);
|
$array = array(
|
||||||
|
'foo' => 3,
|
||||||
|
'bar' => 5,
|
||||||
|
);
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
foreach ($array as $key => $value) {
|
foreach ($array as $key => $value) {
|
||||||
$this->walker->expects($this->once())
|
$this->walker->expects($this->at($i++))
|
||||||
->method('walkConstraint')
|
->method('walkConstraint')
|
||||||
->with($this->equalTo($constraint), $this->equalTo($value), $this->equalTo('MyGroup'), $this->equalTo('bar['.$key.']'));
|
->with($constraint, $value, 'MyGroup', 'foo.bar['.$key.']');
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->prepareTestData($array);
|
$data = $this->prepareTestData($array);
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'foo' => $constraint,
|
'foo' => $constraint,
|
||||||
|
'bar' => $constraint,
|
||||||
),
|
),
|
||||||
))));
|
))));
|
||||||
}
|
}
|
||||||
@ -105,21 +123,30 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
new Min(4),
|
new Min(4),
|
||||||
new NotNull(),
|
new NotNull(),
|
||||||
);
|
);
|
||||||
$array = array('foo' => 3);
|
|
||||||
|
$array = array(
|
||||||
|
'foo' => 3,
|
||||||
|
'bar' => 5,
|
||||||
|
);
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
foreach ($array as $key => $value) {
|
foreach ($array as $key => $value) {
|
||||||
foreach ($constraints as $i => $constraint) {
|
foreach ($constraints as $constraint) {
|
||||||
$this->walker->expects($this->at($i))
|
$this->walker->expects($this->at($i++))
|
||||||
->method('walkConstraint')
|
->method('walkConstraint')
|
||||||
->with($this->equalTo($constraint), $this->equalTo($value), $this->equalTo('MyGroup'), $this->equalTo('bar['.$key.']'));
|
->with($constraint, $value, 'MyGroup', 'foo.bar['.$key.']');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->prepareTestData($array);
|
$data = $this->prepareTestData($array);
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'foo' => $constraints,
|
'foo' => $constraints,
|
||||||
|
'bar' => $constraints,
|
||||||
)
|
)
|
||||||
))));
|
))));
|
||||||
}
|
}
|
||||||
@ -131,21 +158,18 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'baz' => 6,
|
'baz' => 6,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolationAtRelativePath')
|
||||||
|
->with('[baz]', 'myMessage', array(
|
||||||
|
'{{ field }}' => 'baz'
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($data, new Collection(array(
|
$this->assertFalse($this->validator->isValid($data, new Collection(array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'foo' => new Min(4),
|
'foo' => new Min(4),
|
||||||
),
|
),
|
||||||
|
'extraFieldsMessage' => 'myMessage',
|
||||||
))));
|
))));
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
|
||||||
new ConstraintViolation(
|
|
||||||
'This field was not expected',
|
|
||||||
array('{{ field }}' => '"baz"'),
|
|
||||||
'Root',
|
|
||||||
'bar[baz]',
|
|
||||||
6
|
|
||||||
),
|
|
||||||
)), $this->context->getViolations());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// bug fix
|
// bug fix
|
||||||
@ -154,13 +178,17 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$data = $this->prepareTestData(array(
|
$data = $this->prepareTestData(array(
|
||||||
'foo' => null,
|
'foo' => null,
|
||||||
));
|
));
|
||||||
$collection = new Collection(array(
|
|
||||||
|
$constraint = new Collection(array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'foo' => new Min(4),
|
'foo' => new Min(4),
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, $collection));
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
|
$this->assertTrue($this->validator->isValid($data, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testExtraFieldsAllowed()
|
public function testExtraFieldsAllowed()
|
||||||
@ -169,47 +197,55 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'foo' => 5,
|
'foo' => 5,
|
||||||
'bar' => 6,
|
'bar' => 6,
|
||||||
));
|
));
|
||||||
$collection = new Collection(array(
|
|
||||||
|
$constraint = new Collection(array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'foo' => new Min(4),
|
'foo' => new Min(4),
|
||||||
),
|
),
|
||||||
'allowExtraFields' => true,
|
'allowExtraFields' => true,
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, $collection));
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
|
$this->assertTrue($this->validator->isValid($data, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMissingFieldsDisallowed()
|
public function testMissingFieldsDisallowed()
|
||||||
{
|
{
|
||||||
$data = $this->prepareTestData(array());
|
$data = $this->prepareTestData(array());
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($data, new Collection(array(
|
$constraint = new Collection(array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'foo' => new Min(4),
|
'foo' => new Min(4),
|
||||||
),
|
),
|
||||||
))));
|
'missingFieldsMessage' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
$this->context->expects($this->once())
|
||||||
new ConstraintViolation(
|
->method('addViolationAtRelativePath')
|
||||||
'This field is missing',
|
->with('[foo]', 'myMessage', array(
|
||||||
array('{{ field }}' => '"foo"'),
|
'{{ field }}' => 'foo',
|
||||||
'Root',
|
));
|
||||||
'bar[foo]',
|
|
||||||
null
|
$this->assertFalse($this->validator->isValid($data, $constraint));
|
||||||
),
|
|
||||||
)), $this->context->getViolations());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMissingFieldsAllowed()
|
public function testMissingFieldsAllowed()
|
||||||
{
|
{
|
||||||
$data = $this->prepareTestData(array());
|
$data = $this->prepareTestData(array());
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
$constraint = new Collection(array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'foo' => new Min(4),
|
'foo' => new Min(4),
|
||||||
),
|
),
|
||||||
'allowMissingFields' => true,
|
'allowMissingFields' => true,
|
||||||
))));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
|
$this->assertTrue($this->validator->isValid($data, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testOptionalFieldPresent()
|
public function testOptionalFieldPresent()
|
||||||
@ -218,6 +254,9 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'foo' => null,
|
'foo' => null,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
||||||
'foo' => new Optional(),
|
'foo' => new Optional(),
|
||||||
))));
|
))));
|
||||||
@ -227,6 +266,9 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$data = $this->prepareTestData(array());
|
$data = $this->prepareTestData(array());
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
||||||
'foo' => new Optional(),
|
'foo' => new Optional(),
|
||||||
))));
|
))));
|
||||||
@ -242,7 +284,10 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$this->walker->expects($this->once())
|
$this->walker->expects($this->once())
|
||||||
->method('walkConstraint')
|
->method('walkConstraint')
|
||||||
->with($this->equalTo($constraint), $this->equalTo($array['foo']), $this->equalTo('MyGroup'), $this->equalTo('bar[foo]'));
|
->with($constraint, $array['foo'], 'MyGroup', 'foo.bar[foo]');
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$data = $this->prepareTestData($array);
|
$data = $this->prepareTestData($array);
|
||||||
|
|
||||||
@ -265,9 +310,12 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
foreach ($constraints as $i => $constraint) {
|
foreach ($constraints as $i => $constraint) {
|
||||||
$this->walker->expects($this->at($i))
|
$this->walker->expects($this->at($i))
|
||||||
->method('walkConstraint')
|
->method('walkConstraint')
|
||||||
->with($this->equalTo($constraint), $this->equalTo($array['foo']), $this->equalTo('MyGroup'), $this->equalTo('bar[foo]'));
|
->with($constraint, $array['foo'], 'MyGroup', 'foo.bar[foo]');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$data = $this->prepareTestData($array);
|
$data = $this->prepareTestData($array);
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
||||||
@ -281,6 +329,9 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'foo' => null,
|
'foo' => null,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
$this->assertTrue($this->validator->isValid($data, new Collection(array(
|
||||||
'foo' => new Required(),
|
'foo' => new Required(),
|
||||||
))));
|
))));
|
||||||
@ -290,8 +341,17 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$data = $this->prepareTestData(array());
|
$data = $this->prepareTestData(array());
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolationAtRelativePath')
|
||||||
|
->with('[foo]', 'myMessage', array(
|
||||||
|
'{{ field }}' => 'foo',
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($data, new Collection(array(
|
$this->assertFalse($this->validator->isValid($data, new Collection(array(
|
||||||
|
'fields' => array(
|
||||||
'foo' => new Required(),
|
'foo' => new Required(),
|
||||||
|
),
|
||||||
|
'missingFieldsMessage' => 'myMessage',
|
||||||
))));
|
))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,7 +365,10 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$this->walker->expects($this->once())
|
$this->walker->expects($this->once())
|
||||||
->method('walkConstraint')
|
->method('walkConstraint')
|
||||||
->with($this->equalTo($constraint), $this->equalTo($array['foo']), $this->equalTo('MyGroup'), $this->equalTo('bar[foo]'));
|
->with($constraint, $array['foo'], 'MyGroup', 'foo.bar[foo]');
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$data = $this->prepareTestData($array);
|
$data = $this->prepareTestData($array);
|
||||||
|
|
||||||
@ -328,9 +391,12 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
foreach ($constraints as $i => $constraint) {
|
foreach ($constraints as $i => $constraint) {
|
||||||
$this->walker->expects($this->at($i))
|
$this->walker->expects($this->at($i))
|
||||||
->method('walkConstraint')
|
->method('walkConstraint')
|
||||||
->with($this->equalTo($constraint), $this->equalTo($array['foo']), $this->equalTo('MyGroup'), $this->equalTo('bar[foo]'));
|
->with($constraint, $array['foo'], 'MyGroup', 'foo.bar[foo]');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolationAtRelativePath');
|
||||||
|
|
||||||
$data = $this->prepareTestData($array);
|
$data = $this->prepareTestData($array);
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($array, new Collection(array(
|
$this->assertTrue($this->validator->isValid($array, new Collection(array(
|
||||||
@ -343,6 +409,7 @@ abstract class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$value = new \ArrayObject(array(
|
$value = new \ArrayObject(array(
|
||||||
'foo' => 3
|
'foo' => 3
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->validator->isValid($value, new Collection(array(
|
$this->validator->isValid($value, new Collection(array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'foo' => new Min(2),
|
'foo' => new Min(2),
|
||||||
|
@ -16,43 +16,57 @@ use Symfony\Component\Validator\Constraints\CountryValidator;
|
|||||||
|
|
||||||
class CountryValidatorTest extends LocalizedTestCase
|
class CountryValidatorTest extends LocalizedTestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new CountryValidator();
|
$this->validator = new CountryValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Country()));
|
$this->assertTrue($this->validator->isValid(null, new Country()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Country()));
|
$this->assertTrue($this->validator->isValid('', new Country()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Country());
|
$this->validator->isValid(new \stdClass(), new Country());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getValidCountries
|
* @dataProvider getValidCountries
|
||||||
*/
|
*/
|
||||||
public function testValidCountries($date)
|
public function testValidCountries($country)
|
||||||
{
|
{
|
||||||
$this->assertTrue($this->validator->isValid($date, new Country()));
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
|
$this->assertTrue($this->validator->isValid($country, new Country()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getValidCountries()
|
public function getValidCountries()
|
||||||
@ -67,9 +81,19 @@ class CountryValidatorTest extends LocalizedTestCase
|
|||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidCountries
|
* @dataProvider getInvalidCountries
|
||||||
*/
|
*/
|
||||||
public function testInvalidCountries($date)
|
public function testInvalidCountries($country)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($date, new Country()));
|
$constraint = new Country(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $country,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($country, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidCountries()
|
public function getInvalidCountries()
|
||||||
@ -79,17 +103,4 @@ class CountryValidatorTest extends LocalizedTestCase
|
|||||||
array('EN'),
|
array('EN'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Country(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,46 +16,63 @@ use Symfony\Component\Validator\Constraints\DateTimeValidator;
|
|||||||
|
|
||||||
class DateTimeValidatorTest extends \PHPUnit_Framework_TestCase
|
class DateTimeValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new DateTimeValidator();
|
$this->validator = new DateTimeValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new DateTime()));
|
$this->assertTrue($this->validator->isValid(null, new DateTime()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new DateTime()));
|
$this->assertTrue($this->validator->isValid('', new DateTime()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDateTimeClassIsValid()
|
public function testDateTimeClassIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(new \DateTime(), new DateTime()));
|
$this->assertTrue($this->validator->isValid(new \DateTime(), new DateTime()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new DateTime());
|
$this->validator->isValid(new \stdClass(), new DateTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getValidDateTimes
|
* @dataProvider getValidDateTimes
|
||||||
*/
|
*/
|
||||||
public function testValidDateTimes($date)
|
public function testValidDateTimes($dateTime)
|
||||||
{
|
{
|
||||||
$this->assertTrue($this->validator->isValid($date, new DateTime()));
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
|
$this->assertTrue($this->validator->isValid($dateTime, new DateTime()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getValidDateTimes()
|
public function getValidDateTimes()
|
||||||
@ -70,9 +87,19 @@ class DateTimeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidDateTimes
|
* @dataProvider getInvalidDateTimes
|
||||||
*/
|
*/
|
||||||
public function testInvalidDateTimes($date)
|
public function testInvalidDateTimes($dateTime)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($date, new DateTime()));
|
$constraint = new DateTime(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $dateTime,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($dateTime, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidDateTimes()
|
public function getInvalidDateTimes()
|
||||||
@ -90,17 +117,4 @@ class DateTimeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array('2010-01-01 00:00:60'),
|
array('2010-01-01 00:00:60'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new DateTime(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,37 +16,51 @@ use Symfony\Component\Validator\Constraints\DateValidator;
|
|||||||
|
|
||||||
class DateValidatorTest extends \PHPUnit_Framework_TestCase
|
class DateValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new DateValidator();
|
$this->validator = new DateValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Date()));
|
$this->assertTrue($this->validator->isValid(null, new Date()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Date()));
|
$this->assertTrue($this->validator->isValid('', new Date()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDateTimeClassIsValid()
|
public function testDateTimeClassIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(new \DateTime(), new Date()));
|
$this->assertTrue($this->validator->isValid(new \DateTime(), new Date()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Date());
|
$this->validator->isValid(new \stdClass(), new Date());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,6 +69,9 @@ class DateValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidDates($date)
|
public function testValidDates($date)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($date, new Date()));
|
$this->assertTrue($this->validator->isValid($date, new Date()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +89,17 @@ class DateValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidDates($date)
|
public function testInvalidDates($date)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($date, new Date()));
|
$constraint = new Date(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $date,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($date, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidDates()
|
public function getInvalidDates()
|
||||||
@ -86,17 +113,4 @@ class DateValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array('2010-02-29'),
|
array('2010-02-29'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Date(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,32 +16,43 @@ use Symfony\Component\Validator\Constraints\EmailValidator;
|
|||||||
|
|
||||||
class EmailValidatorTest extends \PHPUnit_Framework_TestCase
|
class EmailValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new EmailValidator();
|
$this->validator = new EmailValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Email()));
|
$this->assertTrue($this->validator->isValid(null, new Email()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Email()));
|
$this->assertTrue($this->validator->isValid('', new Email()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Email());
|
$this->validator->isValid(new \stdClass(), new Email());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +61,9 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidEmails($email)
|
public function testValidEmails($email)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($email, new Email()));
|
$this->assertTrue($this->validator->isValid($email, new Email()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +81,17 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidEmails($email)
|
public function testInvalidEmails($email)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($email, new Email()));
|
$constraint = new Email(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $email,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($email, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidEmails()
|
public function getInvalidEmails()
|
||||||
@ -79,17 +103,4 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array('example@example.com@example.com'),
|
array('example@example.com@example.com'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Email(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,25 +16,35 @@ use Symfony\Component\Validator\Constraints\FalseValidator;
|
|||||||
|
|
||||||
class FalseValidatorTest extends \PHPUnit_Framework_TestCase
|
class FalseValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new FalseValidator();
|
$this->validator = new FalseValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new False()));
|
$this->assertTrue($this->validator->isValid(null, new False()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testFalseIsValid()
|
public function testFalseIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(false, new False()));
|
$this->assertTrue($this->validator->isValid(false, new False()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,8 +54,10 @@ class FalseValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'message' => 'myMessage'
|
'message' => 'myMessage'
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array());
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(true, $constraint));
|
$this->assertFalse($this->validator->isValid(true, $constraint));
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Tests\Component\Validator\Constraints;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\File\File;
|
||||||
|
|
||||||
|
class FileValidatorObjectTest extends FileValidatorTest
|
||||||
|
{
|
||||||
|
protected function getFile($filename)
|
||||||
|
{
|
||||||
|
return new File($filename);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Tests\Component\Validator\Constraints;
|
||||||
|
|
||||||
|
use Symfony\Component\Validator\Constraints\File;
|
||||||
|
|
||||||
|
class FileValidatorPathTest extends FileValidatorTest
|
||||||
|
{
|
||||||
|
protected function getFile($filename)
|
||||||
|
{
|
||||||
|
return $filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFileNotFound()
|
||||||
|
{
|
||||||
|
$constraint = new File(array(
|
||||||
|
'notFoundMessage' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ file }}' => 'foobar',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
||||||
|
}
|
||||||
|
}
|
@ -16,15 +16,18 @@ use Symfony\Component\Validator\Constraints\FileValidator;
|
|||||||
use Symfony\Component\HttpFoundation\File\File as FileObject;
|
use Symfony\Component\HttpFoundation\File\File as FileObject;
|
||||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||||
|
|
||||||
class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
abstract class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
protected $path;
|
protected $path;
|
||||||
protected $file;
|
protected $file;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new FileValidator();
|
$this->validator = new FileValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
$this->path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'FileValidatorTest';
|
$this->path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'FileValidatorTest';
|
||||||
$this->file = fopen($this->path, 'w');
|
$this->file = fopen($this->path, 'w');
|
||||||
}
|
}
|
||||||
@ -33,6 +36,7 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
fclose($this->file);
|
fclose($this->file);
|
||||||
|
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
$this->path = null;
|
$this->path = null;
|
||||||
$this->file = null;
|
$this->file = null;
|
||||||
@ -40,11 +44,17 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new File()));
|
$this->assertTrue($this->validator->isValid(null, new File()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new File()));
|
$this->assertTrue($this->validator->isValid('', new File()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,11 +68,17 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testValidFile()
|
public function testValidFile()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($this->path, new File()));
|
$this->assertTrue($this->validator->isValid($this->path, new File()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testValidUploadedfile()
|
public function testValidUploadedfile()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$file = new UploadedFile($this->path, 'originalName');
|
$file = new UploadedFile($this->path, 'originalName');
|
||||||
$this->assertTrue($this->validator->isValid($file, new File()));
|
$this->assertTrue($this->validator->isValid($file, new File()));
|
||||||
}
|
}
|
||||||
@ -76,13 +92,15 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'maxSizeMessage' => 'myMessage',
|
'maxSizeMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFileValid($this->path, $constraint, false);
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ limit }}' => '10 bytes',
|
'{{ limit }}' => '10 bytes',
|
||||||
'{{ size }}' => '11 bytes',
|
'{{ size }}' => '11 bytes',
|
||||||
'{{ file }}' => $this->path,
|
'{{ file }}' => $this->path,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($this->getFile($this->path), $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTooLargeKiloBytes()
|
public function testTooLargeKiloBytes()
|
||||||
@ -94,13 +112,15 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'maxSizeMessage' => 'myMessage',
|
'maxSizeMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFileValid($this->path, $constraint, false);
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ limit }}' => '1 kB',
|
'{{ limit }}' => '1 kB',
|
||||||
'{{ size }}' => '1.4 kB',
|
'{{ size }}' => '1.4 kB',
|
||||||
'{{ file }}' => $this->path,
|
'{{ file }}' => $this->path,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($this->getFile($this->path), $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTooLargeMegaBytes()
|
public function testTooLargeMegaBytes()
|
||||||
@ -112,13 +132,15 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'maxSizeMessage' => 'myMessage',
|
'maxSizeMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFileValid($this->path, $constraint, false);
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ limit }}' => '1 MB',
|
'{{ limit }}' => '1 MB',
|
||||||
'{{ size }}' => '1.4 MB',
|
'{{ size }}' => '1.4 MB',
|
||||||
'{{ file }}' => $this->path,
|
'{{ file }}' => $this->path,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($this->getFile($this->path), $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -133,19 +155,6 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->validator->isValid($this->path, $constraint);
|
$this->validator->isValid($this->path, $constraint);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testFileNotFound()
|
|
||||||
{
|
|
||||||
$constraint = new File(array(
|
|
||||||
'notFoundMessage' => 'myMessage',
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFileValid('foobar', $constraint, false);
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ file }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testValidMimeType()
|
public function testValidMimeType()
|
||||||
{
|
{
|
||||||
$file = $this
|
$file = $this
|
||||||
@ -164,6 +173,9 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
->will($this->returnValue('image/jpg'))
|
->will($this->returnValue('image/jpg'))
|
||||||
;
|
;
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new File(array(
|
$constraint = new File(array(
|
||||||
'mimeTypes' => array('image/png', 'image/jpg'),
|
'mimeTypes' => array('image/png', 'image/jpg'),
|
||||||
));
|
));
|
||||||
@ -189,6 +201,9 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
->will($this->returnValue('image/jpg'))
|
->will($this->returnValue('image/jpg'))
|
||||||
;
|
;
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new File(array(
|
$constraint = new File(array(
|
||||||
'mimeTypes' => array('image/*'),
|
'mimeTypes' => array('image/*'),
|
||||||
));
|
));
|
||||||
@ -219,13 +234,15 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'mimeTypesMessage' => 'myMessage',
|
'mimeTypesMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($file, $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ type }}' => '"application/pdf"',
|
'{{ type }}' => '"application/pdf"',
|
||||||
'{{ types }}' => '"image/png", "image/jpg"',
|
'{{ types }}' => '"image/png", "image/jpg"',
|
||||||
'{{ file }}' => $this->path,
|
'{{ file }}' => $this->path,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($file, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInvalidWildcardMimeType()
|
public function testInvalidWildcardMimeType()
|
||||||
@ -251,35 +268,40 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'mimeTypesMessage' => 'myMessage',
|
'mimeTypesMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($file, $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ type }}' => '"application/pdf"',
|
'{{ type }}' => '"application/pdf"',
|
||||||
'{{ types }}' => '"image/*", "image/jpg"',
|
'{{ types }}' => '"image/*", "image/jpg"',
|
||||||
'{{ file }}' => $this->path,
|
'{{ file }}' => $this->path,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($file, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider uploadedFileErrorProvider
|
* @dataProvider uploadedFileErrorProvider
|
||||||
*/
|
*/
|
||||||
public function testUploadedFileError($error, $message)
|
public function testUploadedFileError($error, $message, array $params = array())
|
||||||
{
|
{
|
||||||
$file = new UploadedFile('/path/to/file', 'originalName', 'mime', 0, $error);
|
$file = new UploadedFile('/path/to/file', 'originalName', 'mime', 0, $error);
|
||||||
|
|
||||||
$options[$message] = 'myMessage';
|
$constraint = new File(array(
|
||||||
|
$message => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
$constraint = new File($options);
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', $params);
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($file, $constraint));
|
$this->assertFalse($this->validator->isValid($file, $constraint));
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function uploadedFileErrorProvider()
|
public function uploadedFileErrorProvider()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array(UPLOAD_ERR_INI_SIZE, 'uploadIniSizeErrorMessage'),
|
array(UPLOAD_ERR_INI_SIZE, 'uploadIniSizeErrorMessage', array('{{ limit }}' => UploadedFile::getMaxFilesize() . ' bytes')),
|
||||||
array(UPLOAD_ERR_FORM_SIZE, 'uploadFormSizeErrorMessage'),
|
array(UPLOAD_ERR_FORM_SIZE, 'uploadFormSizeErrorMessage'),
|
||||||
array(UPLOAD_ERR_PARTIAL, 'uploadErrorMessage'),
|
array(UPLOAD_ERR_PARTIAL, 'uploadErrorMessage'),
|
||||||
array(UPLOAD_ERR_NO_TMP_DIR, 'uploadErrorMessage'),
|
array(UPLOAD_ERR_NO_TMP_DIR, 'uploadErrorMessage'),
|
||||||
@ -287,11 +309,5 @@ class FileValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function assertFileValid($filename, File $constraint, $valid = true)
|
abstract protected function getFile($filename);
|
||||||
{
|
|
||||||
$this->assertEquals($this->validator->isValid($filename, $constraint), $valid);
|
|
||||||
if (file_exists($filename)) {
|
|
||||||
$this->assertEquals($this->validator->isValid(new FileObject($filename), $constraint), $valid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,33 +16,48 @@ use Symfony\Component\Validator\Constraints\ImageValidator;
|
|||||||
|
|
||||||
class ImageValidatorTest extends \PHPUnit_Framework_TestCase
|
class ImageValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
protected $path;
|
protected $path;
|
||||||
protected $image;
|
protected $image;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new ImageValidator();
|
$this->validator = new ImageValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
$this->image = __DIR__.'/Fixtures/test.gif';
|
$this->image = __DIR__.'/Fixtures/test.gif';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Image()));
|
$this->assertTrue($this->validator->isValid(null, new Image()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Image()));
|
$this->assertTrue($this->validator->isValid('', new Image()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testValidImage()
|
public function testValidImage()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($this->image, new Image()));
|
$this->assertTrue($this->validator->isValid($this->image, new Image()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testValidSize()
|
public function testValidSize()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new Image(array(
|
$constraint = new Image(array(
|
||||||
'minWidth' => 1,
|
'minWidth' => 1,
|
||||||
'maxWidth' => 2,
|
'maxWidth' => 2,
|
||||||
@ -60,12 +75,14 @@ class ImageValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'minWidthMessage' => 'myMessage',
|
'minWidthMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($this->image, $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals('myMessage', $this->validator->getMessageTemplate());
|
->method('addViolation')
|
||||||
$this->assertEquals(array(
|
->with('myMessage', array(
|
||||||
'{{ width }}' => '2',
|
'{{ width }}' => '2',
|
||||||
'{{ min_width }}' => '3',
|
'{{ min_width }}' => '3',
|
||||||
), $this->validator->getMessageParameters());
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($this->image, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testWidthTooBig()
|
public function testWidthTooBig()
|
||||||
@ -75,12 +92,14 @@ class ImageValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'maxWidthMessage' => 'myMessage',
|
'maxWidthMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($this->image, $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals('myMessage', $this->validator->getMessageTemplate());
|
->method('addViolation')
|
||||||
$this->assertEquals(array(
|
->with('myMessage', array(
|
||||||
'{{ width }}' => '2',
|
'{{ width }}' => '2',
|
||||||
'{{ max_width }}' => '1',
|
'{{ max_width }}' => '1',
|
||||||
), $this->validator->getMessageParameters());
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($this->image, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHeightTooSmall()
|
public function testHeightTooSmall()
|
||||||
@ -90,12 +109,14 @@ class ImageValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'minHeightMessage' => 'myMessage',
|
'minHeightMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($this->image, $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals('myMessage', $this->validator->getMessageTemplate());
|
->method('addViolation')
|
||||||
$this->assertEquals(array(
|
->with('myMessage', array(
|
||||||
'{{ height }}' => '2',
|
'{{ height }}' => '2',
|
||||||
'{{ min_height }}' => '3',
|
'{{ min_height }}' => '3',
|
||||||
), $this->validator->getMessageParameters());
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($this->image, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHeightTooBig()
|
public function testHeightTooBig()
|
||||||
@ -105,12 +126,14 @@ class ImageValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'maxHeightMessage' => 'myMessage',
|
'maxHeightMessage' => 'myMessage',
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($this->image, $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals('myMessage', $this->validator->getMessageTemplate());
|
->method('addViolation')
|
||||||
$this->assertEquals(array(
|
->with('myMessage', array(
|
||||||
'{{ height }}' => '2',
|
'{{ height }}' => '2',
|
||||||
'{{ max_height }}' => '1',
|
'{{ max_height }}' => '1',
|
||||||
), $this->validator->getMessageParameters());
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($this->image, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,39 +16,51 @@ use Symfony\Component\Validator\Constraints\IpValidator;
|
|||||||
|
|
||||||
class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new IpValidator();
|
$this->validator = new IpValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Ip()));
|
$this->assertTrue($this->validator->isValid(null, new Ip()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Ip()));
|
$this->assertTrue($this->validator->isValid('', new Ip()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Ip());
|
$this->validator->isValid(new \stdClass(), new Ip());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\ConstraintDefinitionException
|
||||||
|
*/
|
||||||
public function testInvalidValidatorVersion()
|
public function testInvalidValidatorVersion()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
|
|
||||||
|
|
||||||
$ip = new Ip(array(
|
$ip = new Ip(array(
|
||||||
'version' => 666,
|
'version' => 666,
|
||||||
));
|
));
|
||||||
@ -59,6 +71,9 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidIpsV4($ip)
|
public function testValidIpsV4($ip)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($ip, new Ip(array(
|
$this->assertTrue($this->validator->isValid($ip, new Ip(array(
|
||||||
'version' => Ip::V4,
|
'version' => Ip::V4,
|
||||||
))));
|
))));
|
||||||
@ -83,6 +98,9 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidIpsV6($ip)
|
public function testValidIpsV6($ip)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($ip, new Ip(array(
|
$this->assertTrue($this->validator->isValid($ip, new Ip(array(
|
||||||
'version' => Ip::V6,
|
'version' => Ip::V6,
|
||||||
))));
|
))));
|
||||||
@ -118,6 +136,9 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidIpsAll($ip)
|
public function testValidIpsAll($ip)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($ip, new Ip(array(
|
$this->assertTrue($this->validator->isValid($ip, new Ip(array(
|
||||||
'version' => Ip::ALL,
|
'version' => Ip::ALL,
|
||||||
))));
|
))));
|
||||||
@ -133,9 +154,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidIpsV4($ip)
|
public function testInvalidIpsV4($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::V4,
|
'version' => Ip::V4,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidIpsV4()
|
public function getInvalidIpsV4()
|
||||||
@ -158,9 +188,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidPrivateIpsV4($ip)
|
public function testInvalidPrivateIpsV4($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::V4_NO_PRIV,
|
'version' => Ip::V4_NO_PRIV,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidPrivateIpsV4()
|
public function getInvalidPrivateIpsV4()
|
||||||
@ -177,9 +216,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidReservedIpsV4($ip)
|
public function testInvalidReservedIpsV4($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::V4_NO_RES,
|
'version' => Ip::V4_NO_RES,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidReservedIpsV4()
|
public function getInvalidReservedIpsV4()
|
||||||
@ -196,9 +244,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidPublicIpsV4($ip)
|
public function testInvalidPublicIpsV4($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::V4_ONLY_PUBLIC,
|
'version' => Ip::V4_ONLY_PUBLIC,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidPublicIpsV4()
|
public function getInvalidPublicIpsV4()
|
||||||
@ -211,9 +268,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidIpsV6($ip)
|
public function testInvalidIpsV6($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::V6,
|
'version' => Ip::V6,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidIpsV6()
|
public function getInvalidIpsV6()
|
||||||
@ -240,9 +306,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidPrivateIpsV6($ip)
|
public function testInvalidPrivateIpsV6($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::V6_NO_PRIV,
|
'version' => Ip::V6_NO_PRIV,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidPrivateIpsV6()
|
public function getInvalidPrivateIpsV6()
|
||||||
@ -259,9 +334,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidReservedIpsV6($ip)
|
public function testInvalidReservedIpsV6($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::V6_NO_RES,
|
'version' => Ip::V6_NO_RES,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidReservedIpsV6()
|
public function getInvalidReservedIpsV6()
|
||||||
@ -277,9 +361,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidPublicIpsV6($ip)
|
public function testInvalidPublicIpsV6($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::V6_ONLY_PUBLIC,
|
'version' => Ip::V6_ONLY_PUBLIC,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidPublicIpsV6()
|
public function getInvalidPublicIpsV6()
|
||||||
@ -292,9 +385,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidIpsAll($ip)
|
public function testInvalidIpsAll($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::ALL,
|
'version' => Ip::ALL,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidIpsAll()
|
public function getInvalidIpsAll()
|
||||||
@ -307,9 +409,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidPrivateIpsAll($ip)
|
public function testInvalidPrivateIpsAll($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::ALL_NO_PRIV,
|
'version' => Ip::ALL_NO_PRIV,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidPrivateIpsAll()
|
public function getInvalidPrivateIpsAll()
|
||||||
@ -322,9 +433,18 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidReservedIpsAll($ip)
|
public function testInvalidReservedIpsAll($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::ALL_NO_RES,
|
'version' => Ip::ALL_NO_RES,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidReservedIpsAll()
|
public function getInvalidReservedIpsAll()
|
||||||
@ -337,26 +457,22 @@ class IpValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidPublicIpsAll($ip)
|
public function testInvalidPublicIpsAll($ip)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($ip, new Ip(array(
|
$constraint = new Ip(array(
|
||||||
'version' => Ip::ALL_ONLY_PUBLIC,
|
'version' => Ip::ALL_ONLY_PUBLIC,
|
||||||
))));
|
'message' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $ip,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($ip, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidPublicIpsAll()
|
public function getInvalidPublicIpsAll()
|
||||||
{
|
{
|
||||||
return array_merge($this->getInvalidPublicIpsV4(), $this->getInvalidPublicIpsV6());
|
return array_merge($this->getInvalidPublicIpsV4(), $this->getInvalidPublicIpsV6());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Ip(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,43 +16,57 @@ use Symfony\Component\Validator\Constraints\LanguageValidator;
|
|||||||
|
|
||||||
class LanguageValidatorTest extends LocalizedTestCase
|
class LanguageValidatorTest extends LocalizedTestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new LanguageValidator();
|
$this->validator = new LanguageValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Language()));
|
$this->assertTrue($this->validator->isValid(null, new Language()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Language()));
|
$this->assertTrue($this->validator->isValid('', new Language()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Language());
|
$this->validator->isValid(new \stdClass(), new Language());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getValidLanguages
|
* @dataProvider getValidLanguages
|
||||||
*/
|
*/
|
||||||
public function testValidLanguages($date)
|
public function testValidLanguages($language)
|
||||||
{
|
{
|
||||||
$this->assertTrue($this->validator->isValid($date, new Language()));
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
|
$this->assertTrue($this->validator->isValid($language, new Language()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getValidLanguages()
|
public function getValidLanguages()
|
||||||
@ -67,9 +81,19 @@ class LanguageValidatorTest extends LocalizedTestCase
|
|||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidLanguages
|
* @dataProvider getInvalidLanguages
|
||||||
*/
|
*/
|
||||||
public function testInvalidLanguages($date)
|
public function testInvalidLanguages($language)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($date, new Language()));
|
$constraint = new Language(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $language,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($language, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidLanguages()
|
public function getInvalidLanguages()
|
||||||
@ -79,17 +103,4 @@ class LanguageValidatorTest extends LocalizedTestCase
|
|||||||
array('foobar'),
|
array('foobar'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Language(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,43 +16,57 @@ use Symfony\Component\Validator\Constraints\LocaleValidator;
|
|||||||
|
|
||||||
class LocaleValidatorTest extends LocalizedTestCase
|
class LocaleValidatorTest extends LocalizedTestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new LocaleValidator();
|
$this->validator = new LocaleValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Locale()));
|
$this->assertTrue($this->validator->isValid(null, new Locale()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Locale()));
|
$this->assertTrue($this->validator->isValid('', new Locale()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Locale());
|
$this->validator->isValid(new \stdClass(), new Locale());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getValidLocales
|
* @dataProvider getValidLocales
|
||||||
*/
|
*/
|
||||||
public function testValidLocales($date)
|
public function testValidLocales($locale)
|
||||||
{
|
{
|
||||||
$this->assertTrue($this->validator->isValid($date, new Locale()));
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
|
$this->assertTrue($this->validator->isValid($locale, new Locale()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getValidLocales()
|
public function getValidLocales()
|
||||||
@ -68,9 +82,19 @@ class LocaleValidatorTest extends LocalizedTestCase
|
|||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidLocales
|
* @dataProvider getInvalidLocales
|
||||||
*/
|
*/
|
||||||
public function testInvalidLocales($date)
|
public function testInvalidLocales($locale)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($date, new Locale()));
|
$constraint = new Locale(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $locale,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($locale, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidLocales()
|
public function getInvalidLocales()
|
||||||
@ -80,17 +104,4 @@ class LocaleValidatorTest extends LocalizedTestCase
|
|||||||
array('foobar'),
|
array('foobar'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Locale(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,65 +16,94 @@ use Symfony\Component\Validator\Constraints\MaxLengthValidator;
|
|||||||
|
|
||||||
class MaxLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
class MaxLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new MaxLengthValidator();
|
$this->validator = new MaxLengthValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new MaxLength(array('limit' => 5))));
|
$this->assertTrue($this->validator->isValid(null, new MaxLength(array('limit' => 5))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new MaxLength(array('limit' => 5))));
|
$this->assertTrue($this->validator->isValid('', new MaxLength(array('limit' => 5))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new MaxLength(array('limit' => 5)));
|
$this->validator->isValid(new \stdClass(), new MaxLength(array('limit' => 5)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getValidValues
|
* @dataProvider getValidValues
|
||||||
*/
|
*/
|
||||||
public function testValidValues($value, $skip = false)
|
public function testValidValues($value, $mbOnly = false)
|
||||||
{
|
{
|
||||||
if (!$skip) {
|
if ($mbOnly && !function_exists('mb_strlen')) {
|
||||||
|
return $this->markTestSkipped('mb_strlen does not exist');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new MaxLength(array('limit' => 5));
|
$constraint = new MaxLength(array('limit' => 5));
|
||||||
$this->assertTrue($this->validator->isValid($value, $constraint));
|
$this->assertTrue($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public function getValidValues()
|
public function getValidValues()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array(12345),
|
array(12345),
|
||||||
array('12345'),
|
array('12345'),
|
||||||
array('üüüüü', !function_exists('mb_strlen')),
|
array('üüüüü', true),
|
||||||
array('ééééé', !function_exists('mb_strlen')),
|
array('ééééé', true),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidValues
|
* @dataProvider getInvalidValues
|
||||||
*/
|
*/
|
||||||
public function testInvalidValues($value, $skip = false)
|
public function testInvalidValues($value, $mbOnly = false)
|
||||||
{
|
{
|
||||||
if (!$skip) {
|
if ($mbOnly && !function_exists('mb_strlen')) {
|
||||||
$constraint = new MaxLength(array('limit' => 5));
|
return $this->markTestSkipped('mb_strlen does not exist');
|
||||||
$this->assertFalse($this->validator->isValid($value, $constraint));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$constraint = new MaxLength(array(
|
||||||
|
'limit' => 5,
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $value,
|
||||||
|
'{{ limit }}' => 5,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidValues()
|
public function getInvalidValues()
|
||||||
@ -82,26 +111,11 @@ class MaxLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
return array(
|
return array(
|
||||||
array(123456),
|
array(123456),
|
||||||
array('123456'),
|
array('123456'),
|
||||||
array('üüüüüü', !function_exists('mb_strlen')),
|
array('üüüüüü', true),
|
||||||
array('éééééé', !function_exists('mb_strlen')),
|
array('éééééé', true),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new MaxLength(array(
|
|
||||||
'limit' => 5,
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('123456', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => '123456',
|
|
||||||
'{{ limit }}' => 5,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testConstraintGetDefaultOption()
|
public function testConstraintGetDefaultOption()
|
||||||
{
|
{
|
||||||
$constraint = new MaxLength(array(
|
$constraint = new MaxLength(array(
|
||||||
|
@ -16,20 +16,27 @@ use Symfony\Component\Validator\Constraints\MaxValidator;
|
|||||||
|
|
||||||
class MaxValidatorTest extends \PHPUnit_Framework_TestCase
|
class MaxValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new MaxValidator();
|
$this->validator = new MaxValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Max(array('limit' => 10))));
|
$this->assertTrue($this->validator->isValid(null, new Max(array('limit' => 10))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,6 +45,9 @@ class MaxValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidValues($value)
|
public function testValidValues($value)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new Max(array('limit' => 10));
|
$constraint = new Max(array('limit' => 10));
|
||||||
$this->assertTrue($this->validator->isValid($value, $constraint));
|
$this->assertTrue($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
@ -57,7 +67,19 @@ class MaxValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidValues($value)
|
public function testInvalidValues($value)
|
||||||
{
|
{
|
||||||
$constraint = new Max(array('limit' => 10));
|
$constraint = new Max(array(
|
||||||
|
'limit' => 10,
|
||||||
|
'message' => 'myMessage',
|
||||||
|
'invalidMessage' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $value,
|
||||||
|
'{{ limit }}' => 10,
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($value, $constraint));
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,21 +92,6 @@ class MaxValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Max(array(
|
|
||||||
'limit' => 10,
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(11, $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 11,
|
|
||||||
'{{ limit }}' => 10,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testConstraintGetDefaultOption()
|
public function testConstraintGetDefaultOption()
|
||||||
{
|
{
|
||||||
$constraint = new Max(array(
|
$constraint = new Max(array(
|
||||||
|
@ -16,90 +16,104 @@ use Symfony\Component\Validator\Constraints\MinLengthValidator;
|
|||||||
|
|
||||||
class MinLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
class MinLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new MinLengthValidator();
|
$this->validator = new MinLengthValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new MinLength(array('limit' => 6))));
|
$this->assertTrue($this->validator->isValid(null, new MinLength(array('limit' => 6))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new MinLength(array('limit' => 6))));
|
$this->assertTrue($this->validator->isValid('', new MinLength(array('limit' => 6))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new MinLength(array('limit' => 5)));
|
$this->validator->isValid(new \stdClass(), new MinLength(array('limit' => 5)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getValidValues
|
* @dataProvider getValidValues
|
||||||
*/
|
*/
|
||||||
public function testValidValues($value, $skip = false)
|
public function testValidValues($value, $mbOnly = false)
|
||||||
{
|
{
|
||||||
if (!$skip) {
|
if ($mbOnly && !function_exists('mb_strlen')) {
|
||||||
|
return $this->markTestSkipped('mb_strlen does not exist');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new MinLength(array('limit' => 6));
|
$constraint = new MinLength(array('limit' => 6));
|
||||||
$this->assertTrue($this->validator->isValid($value, $constraint));
|
$this->assertTrue($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public function getValidValues()
|
public function getValidValues()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array(123456),
|
array(123456),
|
||||||
array('123456'),
|
array('123456'),
|
||||||
array('üüüüüü', !function_exists('mb_strlen')),
|
array('üüüüüü', true),
|
||||||
array('éééééé', !function_exists('mb_strlen')),
|
array('éééééé', true),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidValues
|
* @dataProvider getInvalidValues
|
||||||
*/
|
*/
|
||||||
public function testInvalidValues($value, $skip = false)
|
public function testInvalidValues($value, $mbOnly = false)
|
||||||
{
|
{
|
||||||
if (!$skip) {
|
if ($mbOnly && !function_exists('mb_strlen')) {
|
||||||
$constraint = new MinLength(array('limit' => 6));
|
return $this->markTestSkipped('mb_strlen does not exist');
|
||||||
$this->assertFalse($this->validator->isValid($value, $constraint));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidValues()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
array(12345),
|
|
||||||
array('12345'),
|
|
||||||
array('üüüüü', !function_exists('mb_strlen')),
|
|
||||||
array('ééééé', !function_exists('mb_strlen')),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new MinLength(array(
|
$constraint = new MinLength(array(
|
||||||
'limit' => 5,
|
'limit' => 5,
|
||||||
'message' => 'myMessage'
|
'message' => 'myMessage'
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('1234', $constraint));
|
$this->context->expects($this->once())
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
->method('addViolation')
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
->with('myMessage', array(
|
||||||
'{{ value }}' => '1234',
|
'{{ value }}' => $value,
|
||||||
'{{ limit }}' => 5,
|
'{{ limit }}' => 5,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getInvalidValues()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array(1234),
|
||||||
|
array('1234'),
|
||||||
|
array('üüüü', true),
|
||||||
|
array('éééé', true),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testConstraintGetDefaultOption()
|
public function testConstraintGetDefaultOption()
|
||||||
|
@ -16,15 +16,21 @@ use Symfony\Component\Validator\Constraints\MinValidator;
|
|||||||
|
|
||||||
class MinValidatorTest extends \PHPUnit_Framework_TestCase
|
class MinValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new MinValidator();
|
$this->validator = new MinValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Min(array('limit' => 10))));
|
$this->assertTrue($this->validator->isValid(null, new Min(array('limit' => 10))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,6 +39,9 @@ class MinValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidValues($value)
|
public function testValidValues($value)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new Min(array('limit' => 10));
|
$constraint = new Min(array('limit' => 10));
|
||||||
$this->assertTrue($this->validator->isValid($value, $constraint));
|
$this->assertTrue($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
@ -52,7 +61,19 @@ class MinValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidValues($value)
|
public function testInvalidValues($value)
|
||||||
{
|
{
|
||||||
$constraint = new Min(array('limit' => 10));
|
$constraint = new Min(array(
|
||||||
|
'limit' => 10,
|
||||||
|
'message' => 'myMessage',
|
||||||
|
'invalidMessage' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $value,
|
||||||
|
'{{ limit }}' => 10,
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($value, $constraint));
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,21 +86,6 @@ class MinValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Min(array(
|
|
||||||
'limit' => 10,
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(9, $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 9,
|
|
||||||
'{{ limit }}' => 10,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testConstraintGetDefaultOption()
|
public function testConstraintGetDefaultOption()
|
||||||
{
|
{
|
||||||
$constraint = new Min(array(
|
$constraint = new Min(array(
|
||||||
|
@ -16,15 +16,19 @@ use Symfony\Component\Validator\Constraints\NotBlankValidator;
|
|||||||
|
|
||||||
class NotBlankValidatorTest extends \PHPUnit_Framework_TestCase
|
class NotBlankValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new NotBlankValidator();
|
$this->validator = new NotBlankValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,6 +37,9 @@ class NotBlankValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidValues($date)
|
public function testValidValues($date)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($date, new NotBlank()));
|
$this->assertTrue($this->validator->isValid($date, new NotBlank()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,33 +56,54 @@ class NotBlankValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function testNullIsInvalid()
|
public function testNullIsInvalid()
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid(null, new NotBlank()));
|
$constraint = new NotBlank(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage');
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid(null, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testBlankIsInvalid()
|
public function testBlankIsInvalid()
|
||||||
{
|
|
||||||
$this->assertFalse($this->validator->isValid('', new NotBlank()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testFalseIsInvalid()
|
|
||||||
{
|
|
||||||
$this->assertFalse($this->validator->isValid(false, new NotBlank()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testEmptyArrayIsInvalid()
|
|
||||||
{
|
|
||||||
$this->assertFalse($this->validator->isValid(array(), new NotBlank()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testSetMessage()
|
|
||||||
{
|
{
|
||||||
$constraint = new NotBlank(array(
|
$constraint = new NotBlank(array(
|
||||||
'message' => 'myMessage'
|
'message' => 'myMessage'
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage');
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('', $constraint));
|
$this->assertFalse($this->validator->isValid('', $constraint));
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
}
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array());
|
|
||||||
|
public function testFalseIsInvalid()
|
||||||
|
{
|
||||||
|
$constraint = new NotBlank(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage');
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid(false, $constraint));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testEmptyArrayIsInvalid()
|
||||||
|
{
|
||||||
|
$constraint = new NotBlank(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage');
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid(array(), $constraint));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,15 +16,19 @@ use Symfony\Component\Validator\Constraints\NotNullValidator;
|
|||||||
|
|
||||||
class NotNullValidatorTest extends \PHPUnit_Framework_TestCase
|
class NotNullValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new NotNullValidator();
|
$this->validator = new NotNullValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,6 +37,9 @@ class NotNullValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidValues($value)
|
public function testValidValues($value)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($value, new NotNull()));
|
$this->assertTrue($this->validator->isValid($value, new NotNull()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,8 +59,11 @@ class NotNullValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'message' => 'myMessage'
|
'message' => 'myMessage'
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(null, $constraint));
|
$this->assertFalse($this->validator->isValid(null, $constraint));
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,20 +16,27 @@ use Symfony\Component\Validator\Constraints\NullValidator;
|
|||||||
|
|
||||||
class NullValidatorTest extends \PHPUnit_Framework_TestCase
|
class NullValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new NullValidator();
|
$this->validator = new NullValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Null()));
|
$this->assertTrue($this->validator->isValid(null, new Null()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,7 +45,17 @@ class NullValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidValues($value)
|
public function testInvalidValues($value)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($value, new Null()));
|
$constraint = new Null(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $value,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidValues()
|
public function getInvalidValues()
|
||||||
@ -50,17 +67,4 @@ class NullValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array(''),
|
array(''),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSetMessage()
|
|
||||||
{
|
|
||||||
$constraint = new Null(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(1, $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 1,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,32 +16,43 @@ use Symfony\Component\Validator\Constraints\RegexValidator;
|
|||||||
|
|
||||||
class RegexValidatorTest extends \PHPUnit_Framework_TestCase
|
class RegexValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new RegexValidator();
|
$this->validator = new RegexValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Regex(array('pattern' => '/^[0-9]+$/'))));
|
$this->assertTrue($this->validator->isValid(null, new Regex(array('pattern' => '/^[0-9]+$/'))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Regex(array('pattern' => '/^[0-9]+$/'))));
|
$this->assertTrue($this->validator->isValid('', new Regex(array('pattern' => '/^[0-9]+$/'))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Regex(array('pattern' => '/^[0-9]+$/')));
|
$this->validator->isValid(new \stdClass(), new Regex(array('pattern' => '/^[0-9]+$/')));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +61,9 @@ class RegexValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidValues($value)
|
public function testValidValues($value)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new Regex(array('pattern' => '/^[0-9]+$/'));
|
$constraint = new Regex(array('pattern' => '/^[0-9]+$/'));
|
||||||
$this->assertTrue($this->validator->isValid($value, $constraint));
|
$this->assertTrue($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
@ -69,7 +83,17 @@ class RegexValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidValues($value)
|
public function testInvalidValues($value)
|
||||||
{
|
{
|
||||||
$constraint = new Regex(array('pattern' => '/^[0-9]+$/'));
|
$constraint = new Regex(array(
|
||||||
|
'pattern' => '/^[0-9]+$/',
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $value,
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($value, $constraint));
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,20 +105,6 @@ class RegexValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Regex(array(
|
|
||||||
'pattern' => '/^[0-9]+$/',
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testConstraintGetDefaultOption()
|
public function testConstraintGetDefaultOption()
|
||||||
{
|
{
|
||||||
$constraint = new Regex(array(
|
$constraint = new Regex(array(
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of the Symfony package.
|
* This file is part of the Symfony package.
|
||||||
*
|
*
|
||||||
* (c) Fabien Potencier <fabien@symfony.com>
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Symfony\Tests\Component\Validator\Constraints;
|
namespace Symfony\Tests\Component\Validator\Constraints;
|
||||||
|
|
||||||
@ -16,45 +16,61 @@ use Symfony\Component\Validator\Constraints\SizeLengthValidator;
|
|||||||
|
|
||||||
class SizeLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
class SizeLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new SizeLengthValidator();
|
$this->validator = new SizeLengthValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new SizeLength(array('min' => 6, 'max' => 10))));
|
$this->assertTrue($this->validator->isValid(null, new SizeLength(array('min' => 6, 'max' => 10))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new SizeLength(array('min' => 6, 'max' => 10))));
|
$this->assertTrue($this->validator->isValid('', new SizeLength(array('min' => 6, 'max' => 10))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new SizeLength(array('min' => 6, 'max' => 10)));
|
$this->validator->isValid(new \stdClass(), new SizeLength(array('min' => 6, 'max' => 10)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getValidValues
|
* @dataProvider getValidValues
|
||||||
*/
|
*/
|
||||||
public function testValidValues($value, $skip = false)
|
public function testValidValues($value, $mbOnly = false)
|
||||||
{
|
{
|
||||||
if (!$skip) {
|
if ($mbOnly && !function_exists('mb_strlen')) {
|
||||||
|
return $this->markTestSkipped('mb_strlen does not exist');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new SizeLength(array('min' => 6, 'max' => 10));
|
$constraint = new SizeLength(array('min' => 6, 'max' => 10));
|
||||||
$this->assertTrue($this->validator->isValid($value, $constraint));
|
$this->assertTrue($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public function getValidValues()
|
public function getValidValues()
|
||||||
{
|
{
|
||||||
@ -63,23 +79,28 @@ class SizeLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array(1234567890),
|
array(1234567890),
|
||||||
array('123456'),
|
array('123456'),
|
||||||
array('1234567890'),
|
array('1234567890'),
|
||||||
array('üüüüüü', !function_exists('mb_strlen')),
|
array('üüüüüü', true),
|
||||||
array('üüüüüüüüüü', !function_exists('mb_strlen')),
|
array('üüüüüüüüüü', true),
|
||||||
array('éééééé', !function_exists('mb_strlen')),
|
array('éééééé', true),
|
||||||
array('éééééééééé', !function_exists('mb_strlen')),
|
array('éééééééééé', true),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidValues
|
* @dataProvider getInvalidValues
|
||||||
*/
|
*/
|
||||||
public function testInvalidValues($value, $skip = false)
|
public function testInvalidValues($value, $mbOnly = false)
|
||||||
{
|
{
|
||||||
if (!$skip) {
|
if ($mbOnly && !function_exists('mb_strlen')) {
|
||||||
|
return $this->markTestSkipped('mb_strlen does not exist');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new SizeLength(array('min' => 6, 'max' => 10));
|
$constraint = new SizeLength(array('min' => 6, 'max' => 10));
|
||||||
$this->assertFalse($this->validator->isValid($value, $constraint));
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public function getInvalidValues()
|
public function getInvalidValues()
|
||||||
{
|
{
|
||||||
@ -88,49 +109,64 @@ class SizeLengthValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array(12345678901),
|
array(12345678901),
|
||||||
array('12345'),
|
array('12345'),
|
||||||
array('12345678901'),
|
array('12345678901'),
|
||||||
array('üüüüü', !function_exists('mb_strlen')),
|
array('üüüüü', true),
|
||||||
array('üüüüüüüüüüü', !function_exists('mb_strlen')),
|
array('üüüüüüüüüüü', true),
|
||||||
array('ééééé', !function_exists('mb_strlen')),
|
array('ééééé', true),
|
||||||
array('ééééééééééé', !function_exists('mb_strlen')),
|
array('ééééééééééé', true),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
public function testMinMessageIsSet()
|
||||||
{
|
{
|
||||||
$constraint = new SizeLength(array(
|
$constraint = new SizeLength(array(
|
||||||
'min' => 5,
|
'min' => 5,
|
||||||
'max' => 10,
|
'max' => 10,
|
||||||
'minMessage' => 'myMinMessage',
|
'minMessage' => 'myMessage',
|
||||||
'maxMessage' => 'myMaxMessage',
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => '1234',
|
||||||
|
'{{ limit }}' => 5,
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('1234', $constraint));
|
$this->assertFalse($this->validator->isValid('1234', $constraint));
|
||||||
$this->assertEquals('myMinMessage', $this->validator->getMessageTemplate());
|
|
||||||
$this->assertEquals(array(
|
|
||||||
'{{ value }}' => '1234',
|
|
||||||
'{{ limit }}' => 5,
|
|
||||||
), $this->validator->getMessageParameters());
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('12345678901', $constraint));
|
|
||||||
$this->assertEquals('myMaxMessage', $this->validator->getMessageTemplate());
|
|
||||||
$this->assertEquals(array(
|
|
||||||
'{{ value }}' => '12345678901',
|
|
||||||
'{{ limit }}' => 10,
|
|
||||||
), $this->validator->getMessageParameters());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testExactErrorMessage()
|
public function testMaxMessageIsSet()
|
||||||
|
{
|
||||||
|
$constraint = new SizeLength(array(
|
||||||
|
'min' => 5,
|
||||||
|
'max' => 10,
|
||||||
|
'maxMessage' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => '12345678901',
|
||||||
|
'{{ limit }}' => 10,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid('12345678901', $constraint));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testExactMessageIsSet()
|
||||||
{
|
{
|
||||||
$constraint = new SizeLength(array(
|
$constraint = new SizeLength(array(
|
||||||
'min' => 5,
|
'min' => 5,
|
||||||
'max' => 5,
|
'max' => 5,
|
||||||
|
'exactMessage' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => '1234',
|
||||||
|
'{{ limit }}' => 5,
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('1234', $constraint));
|
$this->assertFalse($this->validator->isValid('1234', $constraint));
|
||||||
$this->assertEquals('This value should have exactly {{ limit }} characters', $this->validator->getMessageTemplate());
|
|
||||||
$this->assertEquals(array(
|
|
||||||
'{{ value }}' => '1234',
|
|
||||||
'{{ limit }}' => 5,
|
|
||||||
), $this->validator->getMessageParameters());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,15 +16,21 @@ use Symfony\Component\Validator\Constraints\SizeValidator;
|
|||||||
|
|
||||||
class SizeValidatorTest extends \PHPUnit_Framework_TestCase
|
class SizeValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new SizeValidator();
|
$this->validator = new SizeValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Size(array('min' => 10, 'max' => 20))));
|
$this->assertTrue($this->validator->isValid(null, new Size(array('min' => 10, 'max' => 20))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,6 +39,9 @@ class SizeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidValues($value)
|
public function testValidValues($value)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new Size(array('min' => 10, 'max' => 20));
|
$constraint = new Size(array('min' => 10, 'max' => 20));
|
||||||
$this->assertTrue($this->validator->isValid($value, $constraint));
|
$this->assertTrue($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
@ -56,6 +65,9 @@ class SizeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidValues($value)
|
public function testInvalidValues($value)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new Size(array('min' => 10, 'max' => 20));
|
$constraint = new Size(array('min' => 10, 'max' => 20));
|
||||||
$this->assertFalse($this->validator->isValid($value, $constraint));
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
@ -71,27 +83,39 @@ class SizeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
public function testMinMessageIsSet()
|
||||||
{
|
{
|
||||||
$constraint = new Size(array(
|
$constraint = new Size(array(
|
||||||
'min' => 10,
|
'min' => 10,
|
||||||
'max' => 20,
|
'max' => 20,
|
||||||
'minMessage' => 'myMinMessage',
|
'minMessage' => 'myMessage',
|
||||||
'maxMessage' => 'myMaxMessage',
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => 9,
|
||||||
|
'{{ limit }}' => 10,
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(9, $constraint));
|
$this->assertFalse($this->validator->isValid(9, $constraint));
|
||||||
$this->assertEquals('myMinMessage', $this->validator->getMessageTemplate());
|
}
|
||||||
$this->assertEquals(array(
|
|
||||||
'{{ value }}' => 9,
|
|
||||||
'{{ limit }}' => 10,
|
|
||||||
), $this->validator->getMessageParameters());
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(21, $constraint));
|
public function testMaxMessageIsSet()
|
||||||
$this->assertEquals('myMaxMessage', $this->validator->getMessageTemplate());
|
{
|
||||||
$this->assertEquals(array(
|
$constraint = new Size(array(
|
||||||
|
'min' => 10,
|
||||||
|
'max' => 20,
|
||||||
|
'maxMessage' => 'myMessage',
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
'{{ value }}' => 21,
|
'{{ value }}' => 21,
|
||||||
'{{ limit }}' => 20,
|
'{{ limit }}' => 20,
|
||||||
), $this->validator->getMessageParameters());
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid(21, $constraint));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,37 +16,51 @@ use Symfony\Component\Validator\Constraints\TimeValidator;
|
|||||||
|
|
||||||
class TimeValidatorTest extends \PHPUnit_Framework_TestCase
|
class TimeValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new TimeValidator();
|
$this->validator = new TimeValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Time()));
|
$this->assertTrue($this->validator->isValid(null, new Time()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Time()));
|
$this->assertTrue($this->validator->isValid('', new Time()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDateTimeClassIsValid()
|
public function testDateTimeClassIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(new \DateTime(), new Time()));
|
$this->assertTrue($this->validator->isValid(new \DateTime(), new Time()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Time());
|
$this->validator->isValid(new \stdClass(), new Time());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,6 +69,9 @@ class TimeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidTimes($time)
|
public function testValidTimes($time)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($time, new Time()));
|
$this->assertTrue($this->validator->isValid($time, new Time()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +89,17 @@ class TimeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidTimes($time)
|
public function testInvalidTimes($time)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($time, new Time()));
|
$constraint = new Time(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $time,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($time, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidTimes()
|
public function getInvalidTimes()
|
||||||
@ -87,17 +114,4 @@ class TimeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array('00:00:60'),
|
array('00:00:60'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Time(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,25 +16,35 @@ use Symfony\Component\Validator\Constraints\TrueValidator;
|
|||||||
|
|
||||||
class TrueValidatorTest extends \PHPUnit_Framework_TestCase
|
class TrueValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new TrueValidator();
|
$this->validator = new TrueValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new True()));
|
$this->assertTrue($this->validator->isValid(null, new True()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTrueIsValid()
|
public function testTrueIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(true, new True()));
|
$this->assertTrue($this->validator->isValid(true, new True()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,8 +54,11 @@ class TrueValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
'message' => 'myMessage'
|
'message' => 'myMessage'
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid(false, $constraint));
|
$this->assertFalse($this->validator->isValid(false, $constraint));
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -19,25 +19,35 @@ class TypeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
protected static $file;
|
protected static $file;
|
||||||
|
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new TypeValidator();
|
$this->validator = new TypeValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Type(array('type' => 'integer'))));
|
$this->assertTrue($this->validator->isValid(null, new Type(array('type' => 'integer'))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyIsValidIfString()
|
public function testEmptyIsValidIfString()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Type(array('type' => 'string'))));
|
$this->assertTrue($this->validator->isValid('', new Type(array('type' => 'string'))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,6 +61,9 @@ class TypeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidValues($value, $type)
|
public function testValidValues($value, $type)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new Type(array('type' => $type));
|
$constraint = new Type(array('type' => $type));
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($value, $constraint));
|
$this->assertTrue($this->validator->isValid($value, $constraint));
|
||||||
@ -96,81 +109,60 @@ class TypeValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
/**
|
/**
|
||||||
* @dataProvider getInvalidValues
|
* @dataProvider getInvalidValues
|
||||||
*/
|
*/
|
||||||
public function testInvalidValues($value, $type)
|
public function testInvalidValues($value, $type, $valueAsString)
|
||||||
{
|
{
|
||||||
$constraint = new Type(array('type' => $type));
|
$constraint = new Type(array(
|
||||||
|
'type' => $type,
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $valueAsString,
|
||||||
|
'{{ type }}' => $type,
|
||||||
|
));
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid($value, $constraint));
|
$this->assertFalse($this->validator->isValid($value, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testConstraintViolationCanHandleArrayValue()
|
|
||||||
{
|
|
||||||
$constraint = new Type(array('type' => 'string'));
|
|
||||||
$this->validator->isValid(array(0 => "Test"), $constraint);
|
|
||||||
|
|
||||||
$violation = new ConstraintViolation(
|
|
||||||
'{{ value }}',
|
|
||||||
$this->validator->getMessageParameters(),
|
|
||||||
'',
|
|
||||||
'',
|
|
||||||
''
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertEquals('Array', $violation->getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getInvalidValues()
|
public function getInvalidValues()
|
||||||
{
|
{
|
||||||
$object = new \stdClass();
|
$object = new \stdClass();
|
||||||
$file = $this->createFile();
|
$file = $this->createFile();
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
array('foobar', 'numeric'),
|
array('foobar', 'numeric', 'foobar'),
|
||||||
array('foobar', 'boolean'),
|
array('foobar', 'boolean', 'foobar'),
|
||||||
array('0', 'integer'),
|
array('0', 'integer', '0'),
|
||||||
array('1.5', 'float'),
|
array('1.5', 'float', '1.5'),
|
||||||
array(12345, 'string'),
|
array(12345, 'string', '12345'),
|
||||||
array($object, 'boolean'),
|
array($object, 'boolean', 'stdClass'),
|
||||||
array($object, 'numeric'),
|
array($object, 'numeric', 'stdClass'),
|
||||||
array($object, 'integer'),
|
array($object, 'integer', 'stdClass'),
|
||||||
array($object, 'float'),
|
array($object, 'float', 'stdClass'),
|
||||||
array($object, 'string'),
|
array($object, 'string', 'stdClass'),
|
||||||
array($object, 'resource'),
|
array($object, 'resource', 'stdClass'),
|
||||||
array($file, 'boolean'),
|
array($file, 'boolean', (string) $file),
|
||||||
array($file, 'numeric'),
|
array($file, 'numeric', (string) $file),
|
||||||
array($file, 'integer'),
|
array($file, 'integer', (string) $file),
|
||||||
array($file, 'float'),
|
array($file, 'float', (string) $file),
|
||||||
array($file, 'string'),
|
array($file, 'string', (string) $file),
|
||||||
array($file, 'object'),
|
array($file, 'object', (string) $file),
|
||||||
array('12a34', 'digit'),
|
array('12a34', 'digit', '12a34'),
|
||||||
array('1a#23', 'alnum'),
|
array('1a#23', 'alnum', '1a#23'),
|
||||||
array('abcd1', 'alpha'),
|
array('abcd1', 'alpha', 'abcd1'),
|
||||||
array("\nabc", 'cntrl'),
|
array("\nabc", 'cntrl', "\nabc"),
|
||||||
array("abc\n", 'graph'),
|
array("abc\n", 'graph', "abc\n"),
|
||||||
array('abCDE', 'lower'),
|
array('abCDE', 'lower', 'abCDE'),
|
||||||
array('ABcde', 'upper'),
|
array('ABcde', 'upper', 'ABcde'),
|
||||||
array("\nabc", 'print'),
|
array("\nabc", 'print', "\nabc"),
|
||||||
array('abc&$!', 'punct'),
|
array('abc&$!', 'punct', 'abc&$!'),
|
||||||
array("\nabc", 'space'),
|
array("\nabc", 'space', "\nabc"),
|
||||||
array('AR1012', 'xdigit'),
|
array('AR1012', 'xdigit', 'AR1012'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Type(array(
|
|
||||||
'type' => 'numeric',
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
'{{ type }}' => 'numeric',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function createFile()
|
protected function createFile()
|
||||||
{
|
{
|
||||||
if (!self::$file) {
|
if (!self::$file) {
|
@ -16,32 +16,43 @@ use Symfony\Component\Validator\Constraints\UrlValidator;
|
|||||||
|
|
||||||
class UrlValidatorTest extends \PHPUnit_Framework_TestCase
|
class UrlValidatorTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
protected $context;
|
||||||
protected $validator;
|
protected $validator;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
|
$this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
|
||||||
$this->validator = new UrlValidator();
|
$this->validator = new UrlValidator();
|
||||||
|
$this->validator->initialize($this->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown()
|
||||||
{
|
{
|
||||||
|
$this->context = null;
|
||||||
$this->validator = null;
|
$this->validator = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testNullIsValid()
|
public function testNullIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid(null, new Url()));
|
$this->assertTrue($this->validator->isValid(null, new Url()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmptyStringIsValid()
|
public function testEmptyStringIsValid()
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid('', new Url()));
|
$this->assertTrue($this->validator->isValid('', new Url()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Validator\Exception\UnexpectedTypeException
|
||||||
|
*/
|
||||||
public function testExpectsStringCompatibleType()
|
public function testExpectsStringCompatibleType()
|
||||||
{
|
{
|
||||||
$this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');
|
|
||||||
|
|
||||||
$this->validator->isValid(new \stdClass(), new Url());
|
$this->validator->isValid(new \stdClass(), new Url());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +61,9 @@ class UrlValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testValidUrls($url)
|
public function testValidUrls($url)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$this->assertTrue($this->validator->isValid($url, new Url()));
|
$this->assertTrue($this->validator->isValid($url, new Url()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +106,17 @@ class UrlValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testInvalidUrls($url)
|
public function testInvalidUrls($url)
|
||||||
{
|
{
|
||||||
$this->assertFalse($this->validator->isValid($url, new Url()));
|
$constraint = new Url(array(
|
||||||
|
'message' => 'myMessage'
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->context->expects($this->once())
|
||||||
|
->method('addViolation')
|
||||||
|
->with('myMessage', array(
|
||||||
|
'{{ value }}' => $url,
|
||||||
|
));
|
||||||
|
|
||||||
|
$this->assertFalse($this->validator->isValid($url, $constraint));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvalidUrls()
|
public function getInvalidUrls()
|
||||||
@ -118,6 +142,9 @@ class UrlValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testCustomProtocolIsValid($url)
|
public function testCustomProtocolIsValid($url)
|
||||||
{
|
{
|
||||||
|
$this->context->expects($this->never())
|
||||||
|
->method('addViolation');
|
||||||
|
|
||||||
$constraint = new Url(array(
|
$constraint = new Url(array(
|
||||||
'protocols' => array('ftp', 'file', 'git')
|
'protocols' => array('ftp', 'file', 'git')
|
||||||
));
|
));
|
||||||
@ -133,17 +160,4 @@ class UrlValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
array('git://[::1]/'),
|
array('git://[::1]/'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessageIsSet()
|
|
||||||
{
|
|
||||||
$constraint = new Url(array(
|
|
||||||
'message' => 'myMessage'
|
|
||||||
));
|
|
||||||
|
|
||||||
$this->assertFalse($this->validator->isValid('foobar', $constraint));
|
|
||||||
$this->assertEquals($this->validator->getMessageTemplate(), 'myMessage');
|
|
||||||
$this->assertEquals($this->validator->getMessageParameters(), array(
|
|
||||||
'{{ value }}' => 'foobar',
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -105,10 +105,10 @@ class ExecutionContextTest extends \PHPUnit_Framework_TestCase
|
|||||||
)), $this->context->getViolations());
|
)), $this->context->getViolations());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAddViolationAt()
|
public function testAddViolationAtPath()
|
||||||
{
|
{
|
||||||
// override preconfigured property path
|
// override preconfigured property path
|
||||||
$this->context->addViolationAt('bar.baz', 'Error', array('foo' => 'bar'), 'invalid');
|
$this->context->addViolationAtPath('bar.baz', 'Error', array('foo' => 'bar'), 'invalid');
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
$this->assertEquals(new ConstraintViolationList(array(
|
||||||
new ConstraintViolation(
|
new ConstraintViolation(
|
||||||
@ -121,9 +121,9 @@ class ExecutionContextTest extends \PHPUnit_Framework_TestCase
|
|||||||
)), $this->context->getViolations());
|
)), $this->context->getViolations());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAddViolationAtUsesPreconfiguredValueIfNotPassed()
|
public function testAddViolationAtPathUsesPreconfiguredValueIfNotPassed()
|
||||||
{
|
{
|
||||||
$this->context->addViolationAt('bar.baz', 'Error');
|
$this->context->addViolationAtPath('bar.baz', 'Error');
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
$this->assertEquals(new ConstraintViolationList(array(
|
||||||
new ConstraintViolation(
|
new ConstraintViolation(
|
||||||
@ -136,10 +136,10 @@ class ExecutionContextTest extends \PHPUnit_Framework_TestCase
|
|||||||
)), $this->context->getViolations());
|
)), $this->context->getViolations());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAddViolationAtUsesPassedNullValue()
|
public function testAddViolationAtPathUsesPassedNullValue()
|
||||||
{
|
{
|
||||||
// passed null value should override preconfigured value "invalid"
|
// passed null value should override preconfigured value "invalid"
|
||||||
$this->context->addViolationAt('bar.baz', 'Error', array('foo' => 'bar'), null);
|
$this->context->addViolationAtPath('bar.baz', 'Error', array('foo' => 'bar'), null);
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
$this->assertEquals(new ConstraintViolationList(array(
|
||||||
new ConstraintViolation(
|
new ConstraintViolation(
|
||||||
@ -152,10 +152,10 @@ class ExecutionContextTest extends \PHPUnit_Framework_TestCase
|
|||||||
)), $this->context->getViolations());
|
)), $this->context->getViolations());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAddNestedViolationAt()
|
public function testAddViolationAtRelativePath()
|
||||||
{
|
{
|
||||||
// override preconfigured property path
|
// override preconfigured property path
|
||||||
$this->context->addNestedViolationAt('bam.baz', 'Error', array('foo' => 'bar'), 'invalid');
|
$this->context->addViolationAtRelativePath('bam.baz', 'Error', array('foo' => 'bar'), 'invalid');
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
$this->assertEquals(new ConstraintViolationList(array(
|
||||||
new ConstraintViolation(
|
new ConstraintViolation(
|
||||||
@ -168,84 +168,51 @@ class ExecutionContextTest extends \PHPUnit_Framework_TestCase
|
|||||||
)), $this->context->getViolations());
|
)), $this->context->getViolations());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAddNestedViolationAtWithIndexPath()
|
public function testAddViolationAtRelativePathUsesPreconfiguredValueIfNotPassed()
|
||||||
{
|
{
|
||||||
// override preconfigured property path
|
$this->context->addViolationAtRelativePath('bam.baz', 'Error');
|
||||||
$this->context->addNestedViolationAt('[bam]', 'Error', array('foo' => 'bar'), 'invalid');
|
|
||||||
|
$this->assertEquals(new ConstraintViolationList(array(
|
||||||
|
new ConstraintViolation(
|
||||||
|
'Error',
|
||||||
|
array(),
|
||||||
|
'Root',
|
||||||
|
'foo.bar.bam.baz',
|
||||||
|
'currentValue'
|
||||||
|
),
|
||||||
|
)), $this->context->getViolations());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testAddViolationAtRelativePathUsesPassedNullValue()
|
||||||
|
{
|
||||||
|
// passed null value should override preconfigured value "invalid"
|
||||||
|
$this->context->addViolationAtRelativePath('bam.baz', 'Error', array('foo' => 'bar'), null);
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
$this->assertEquals(new ConstraintViolationList(array(
|
||||||
new ConstraintViolation(
|
new ConstraintViolation(
|
||||||
'Error',
|
'Error',
|
||||||
array('foo' => 'bar'),
|
array('foo' => 'bar'),
|
||||||
'Root',
|
'Root',
|
||||||
'foo.bar[bam]',
|
'foo.bar.bam.baz',
|
||||||
'invalid'
|
null
|
||||||
),
|
),
|
||||||
)), $this->context->getViolations());
|
)), $this->context->getViolations());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAddNestedViolationAtWithEmptyPath()
|
public function testGetAbsolutePropertyPathWithIndexPath()
|
||||||
{
|
{
|
||||||
// override preconfigured property path
|
$this->assertEquals('foo.bar[bam]', $this->context->getAbsolutePropertyPath('[bam]'));
|
||||||
$this->context->addNestedViolationAt('', 'Error', array('foo' => 'bar'), 'invalid');
|
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
|
||||||
new ConstraintViolation(
|
|
||||||
'Error',
|
|
||||||
array('foo' => 'bar'),
|
|
||||||
'Root',
|
|
||||||
'foo.bar',
|
|
||||||
'invalid'
|
|
||||||
),
|
|
||||||
)), $this->context->getViolations());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAddNestedViolationAtWithEmptyCurrentPropertyPath()
|
public function testGetAbsolutePropertyPathWithEmptyPath()
|
||||||
|
{
|
||||||
|
$this->assertEquals('foo.bar', $this->context->getAbsolutePropertyPath(''));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetAbsolutePropertyPathWithEmptyCurrentPropertyPath()
|
||||||
{
|
{
|
||||||
$this->context = new ExecutionContext($this->globalContext, 'currentValue', '', 'Group', 'ClassName', 'propertyName');
|
$this->context = new ExecutionContext($this->globalContext, 'currentValue', '', 'Group', 'ClassName', 'propertyName');
|
||||||
|
|
||||||
// override preconfigured property path
|
$this->assertEquals('bam.baz', $this->context->getAbsolutePropertyPath('bam.baz'));
|
||||||
$this->context->addNestedViolationAt('bam.baz', 'Error', array('foo' => 'bar'), 'invalid');
|
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
|
||||||
new ConstraintViolation(
|
|
||||||
'Error',
|
|
||||||
array('foo' => 'bar'),
|
|
||||||
'Root',
|
|
||||||
'bam.baz',
|
|
||||||
'invalid'
|
|
||||||
),
|
|
||||||
)), $this->context->getViolations());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testAddNestedViolationAtUsesPreconfiguredValueIfNotPassed()
|
|
||||||
{
|
|
||||||
$this->context->addNestedViolationAt('bam.baz', 'Error');
|
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
|
||||||
new ConstraintViolation(
|
|
||||||
'Error',
|
|
||||||
array(),
|
|
||||||
'Root',
|
|
||||||
'foo.bar.bam.baz',
|
|
||||||
'currentValue'
|
|
||||||
),
|
|
||||||
)), $this->context->getViolations());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testAddNestedViolationAtUsesPassedNullValue()
|
|
||||||
{
|
|
||||||
// passed null value should override preconfigured value "invalid"
|
|
||||||
$this->context->addNestedViolationAt('bam.baz', 'Error', array('foo' => 'bar'), null);
|
|
||||||
|
|
||||||
$this->assertEquals(new ConstraintViolationList(array(
|
|
||||||
new ConstraintViolation(
|
|
||||||
'Error',
|
|
||||||
array('foo' => 'bar'),
|
|
||||||
'Root',
|
|
||||||
'foo.bar.bam.baz',
|
|
||||||
null
|
|
||||||
),
|
|
||||||
)), $this->context->getViolations());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ class ConstraintAValidator extends ConstraintValidator
|
|||||||
public function isValid($value, Constraint $constraint)
|
public function isValid($value, Constraint $constraint)
|
||||||
{
|
{
|
||||||
if ('VALID' != $value) {
|
if ('VALID' != $value) {
|
||||||
$this->setMessage('message', array('param' => 'value'));
|
$this->context->addViolation('message', array('param' => 'value'));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ class FailingConstraintValidator extends ConstraintValidator
|
|||||||
{
|
{
|
||||||
public function isValid($value, Constraint $constraint)
|
public function isValid($value, Constraint $constraint)
|
||||||
{
|
{
|
||||||
$this->setMessage($constraint->message, array());
|
$this->context->addViolation($constraint->message, array());
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user