ValidatorTest.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. namespace Symfony\Tests\Component\Validator;
  3. require_once __DIR__.'/Fixtures/Entity.php';
  4. require_once __DIR__.'/Fixtures/FailingConstraint.php';
  5. require_once __DIR__.'/Fixtures/FailingConstraintValidator.php';
  6. require_once __DIR__.'/Fixtures/FakeClassMetadataFactory.php';
  7. use Symfony\Tests\Component\Validator\Fixtures\Entity;
  8. use Symfony\Tests\Component\Validator\Fixtures\FakeClassMetadataFactory;
  9. use Symfony\Tests\Component\Validator\Fixtures\FailingConstraint;
  10. use Symfony\Component\Validator\Validator;
  11. use Symfony\Component\Validator\ConstraintViolation;
  12. use Symfony\Component\Validator\ConstraintViolationList;
  13. use Symfony\Component\Validator\ConstraintValidatorFactory;
  14. use Symfony\Component\Validator\Mapping\ClassMetadata;
  15. class ValidatorTest extends \PHPUnit_Framework_TestCase
  16. {
  17. protected $factory;
  18. protected $validator;
  19. protected function setUp()
  20. {
  21. $this->factory = new FakeClassMetadataFactory();
  22. $this->validator = new Validator($this->factory, new ConstraintValidatorFactory());
  23. }
  24. public function testValidate_defaultGroup()
  25. {
  26. $entity = new Entity();
  27. $metadata = new ClassMetadata(get_class($entity));
  28. $metadata->addPropertyConstraint('firstName', new FailingConstraint());
  29. $metadata->addPropertyConstraint('lastName', new FailingConstraint(array(
  30. 'groups' => 'Custom',
  31. )));
  32. $this->factory->addClassMetadata($metadata);
  33. // Only the constraint of group "Default" failed
  34. $violations = new ConstraintViolationList();
  35. $violations->add(new ConstraintViolation(
  36. '',
  37. array(),
  38. $entity,
  39. 'firstName',
  40. ''
  41. ));
  42. $this->assertEquals($violations, $this->validator->validate($entity));
  43. }
  44. public function testValidate_oneGroup()
  45. {
  46. $entity = new Entity();
  47. $metadata = new ClassMetadata(get_class($entity));
  48. $metadata->addPropertyConstraint('firstName', new FailingConstraint());
  49. $metadata->addPropertyConstraint('lastName', new FailingConstraint(array(
  50. 'groups' => 'Custom',
  51. )));
  52. $this->factory->addClassMetadata($metadata);
  53. // Only the constraint of group "Custom" failed
  54. $violations = new ConstraintViolationList();
  55. $violations->add(new ConstraintViolation(
  56. '',
  57. array(),
  58. $entity,
  59. 'lastName',
  60. ''
  61. ));
  62. $this->assertEquals($violations, $this->validator->validate($entity, 'Custom'));
  63. }
  64. public function testValidate_multipleGroups()
  65. {
  66. $entity = new Entity();
  67. $metadata = new ClassMetadata(get_class($entity));
  68. $metadata->addPropertyConstraint('firstName', new FailingConstraint(array(
  69. 'groups' => 'First',
  70. )));
  71. $metadata->addPropertyConstraint('lastName', new FailingConstraint(array(
  72. 'groups' => 'Second',
  73. )));
  74. $this->factory->addClassMetadata($metadata);
  75. // The constraints of both groups failed
  76. $violations = new ConstraintViolationList();
  77. $violations->add(new ConstraintViolation(
  78. '',
  79. array(),
  80. $entity,
  81. 'firstName',
  82. ''
  83. ));
  84. $violations->add(new ConstraintViolation(
  85. '',
  86. array(),
  87. $entity,
  88. 'lastName',
  89. ''
  90. ));
  91. $result = $this->validator->validate($entity, array('First', 'Second'));
  92. $this->assertEquals($violations, $result);
  93. }
  94. public function testValidateProperty()
  95. {
  96. $entity = new Entity();
  97. $metadata = new ClassMetadata(get_class($entity));
  98. $metadata->addPropertyConstraint('firstName', new FailingConstraint());
  99. $this->factory->addClassMetadata($metadata);
  100. $result = $this->validator->validateProperty($entity, 'firstName');
  101. $this->assertEquals(1, count($result));
  102. }
  103. public function testValidatePropertyValue()
  104. {
  105. $entity = new Entity();
  106. $metadata = new ClassMetadata(get_class($entity));
  107. $metadata->addPropertyConstraint('firstName', new FailingConstraint());
  108. $this->factory->addClassMetadata($metadata);
  109. $result = $this->validator->validatePropertyValue(get_class($entity), 'firstName', 'Bernhard');
  110. $this->assertEquals(1, count($result));
  111. }
  112. public function testValidateValue()
  113. {
  114. $result = $this->validator->validateValue('Bernhard', new FailingConstraint());
  115. $this->assertEquals(1, count($result));
  116. }
  117. }