diff --git a/src/Bundle/ChillPersonBundle/Tests/Validator/BirthdateValidatorTest.php b/src/Bundle/ChillPersonBundle/Tests/Validator/BirthdateValidatorTest.php
deleted file mode 100644
index 57b4c2577..000000000
--- a/src/Bundle/ChillPersonBundle/Tests/Validator/BirthdateValidatorTest.php
+++ /dev/null
@@ -1,112 +0,0 @@
-
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-namespace Chill\PersonBundle\Tests\Validator;
-
-use Chill\PersonBundle\Validator\Constraints\BirthdateValidator;
-use Chill\PersonBundle\Validator\Constraints\Birthdate;
-use Prophecy\Argument;
-use Prophecy\Prophet;
-
-/**
- * Test the behaviour of BirthdayValidator
- *
- * @author Julien Fastré
- */
-class BirthdateValidatorTest extends \PHPUnit\Framework\TestCase
-{
- /**
- * A prophecy for \Symfony\Component\Validator\Context\ExecutionContextInterface
- *
- * Will reveal \Symfony\Component\Validator\Context\ExecutionContextInterface
- */
- private $context;
-
- private $prophet;
-
- /**
- *
- * @var Birthdate
- */
- private $constraint;
-
- public function setUp()
- {
- $this->prophet = new Prophet;
-
- $constraintViolationBuilder = $this->prophet->prophesize();
- $constraintViolationBuilder->willImplement('Symfony\Component\Validator\Violation\ConstraintViolationBuilderInterface');
-
- $constraintViolationBuilder->setParameter(Argument::any(), Argument::any())
- ->willReturn($constraintViolationBuilder->reveal());
- $constraintViolationBuilder->addViolation()
- ->willReturn($constraintViolationBuilder->reveal());
-
- $this->context = $this->prophet->prophesize();
- $this->context->willImplement('Symfony\Component\Validator\Context\ExecutionContextInterface');
- $this->context->buildViolation(Argument::type('string'))
- ->willReturn($constraintViolationBuilder->reveal());
-
- $this->constraint = new Birthdate();
- }
-
- public function testValidBirthDate()
- {
-
- $date = new \DateTime('2015-01-01');
-
- $birthdateValidator = new BirthdateValidator();
- $birthdateValidator->initialize($this->context->reveal());
-
- $birthdateValidator->validate($date, $this->constraint);
-
- $this->context->buildViolation(Argument::any())->shouldNotHaveBeenCalled();
- }
-
- public function testInvalidBirthDate()
- {
- $date = new \DateTime('tomorrow');
-
- $birthdateValidator = new BirthdateValidator();
- $birthdateValidator->initialize($this->context->reveal());
-
- $birthdateValidator->validate($date, $this->constraint);
-
- $this->context->buildViolation(Argument::type('string'))->shouldHaveBeenCalled();
- }
-
- public function testInvalidBirthDateWithParameter()
- {
- $date = (new \DateTime('today'))->sub(new \DateInterval('P1M'));
-
- $birthdateValidator = new BirthdateValidator('P1Y');
- $birthdateValidator->initialize($this->context->reveal());
-
- $birthdateValidator->validate($date, $this->constraint);
-
- $this->context->buildViolation(Argument::type('string'))->shouldHaveBeenCalled();
- }
-
- public function tearDown()
- {
- $this->prophet->checkPredictions();
- }
-
-
-}
diff --git a/src/Bundle/ChillPersonBundle/Tests/Validator/Person/BirthdateValidatorTest.php b/src/Bundle/ChillPersonBundle/Tests/Validator/Person/BirthdateValidatorTest.php
new file mode 100644
index 000000000..2e7df4817
--- /dev/null
+++ b/src/Bundle/ChillPersonBundle/Tests/Validator/Person/BirthdateValidatorTest.php
@@ -0,0 +1,72 @@
+
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+namespace Chill\PersonBundle\Tests\Validator\Person;
+
+use Chill\PersonBundle\Validator\Constraints\Person\BirthdateValidator;
+use Chill\PersonBundle\Validator\Constraints\Person\Birthdate;
+use Symfony\Component\Validator\Test\ConstraintValidatorTestCase;
+use Chill\PersonBundle\Entity\Person;
+
+/**
+ * Test the behaviour of BirthdayValidator
+ *
+ * @author Julien Fastré
+ */
+class BirthdateValidatorTest extends ConstraintValidatorTestCase
+{
+
+ public function testValidateTodayInvalid()
+ {
+ $bornToday = new \DateTime('now');
+ $this->validator->validate($bornToday, $this->createConstraint());
+ $this->buildViolation('msg')
+ ->setParameter('%date%', (new \DateTime('yesterday'))->format('d-m-Y'))
+ ->assertRaised();
+ }
+
+ public function testValidateYesterdayValid()
+ {
+ $bornYesterday = new \DateTime('yesterday');
+ $this->validator->validate($bornYesterday, $this->createConstraint());
+ $this->assertNoViolation();
+ }
+
+ public function testTomorrowInvalid()
+ {
+ $bornAfter = new \DateTime('+2 days');
+ $this->validator->validate($bornAfter, $this->createConstraint());
+ $this->buildViolation('msg')
+ ->setParameter('%date%', (new \DateTime('yesterday'))->format('d-m-Y'))
+ ->assertRaised();
+ }
+
+ private function createConstraint()
+ {
+ return new Birthdate([
+ 'message' => 'msg'
+ ]);
+ }
+
+
+ protected function createValidator()
+ {
+ return new BirthdateValidator('P1D');
+ }
+}
diff --git a/src/Bundle/ChillPersonBundle/Validator/Constraints/Birthdate.php b/src/Bundle/ChillPersonBundle/Validator/Constraints/Person/Birthdate.php
similarity index 89%
rename from src/Bundle/ChillPersonBundle/Validator/Constraints/Birthdate.php
rename to src/Bundle/ChillPersonBundle/Validator/Constraints/Person/Birthdate.php
index d09d549fd..b8cf6d8c2 100644
--- a/src/Bundle/ChillPersonBundle/Validator/Constraints/Birthdate.php
+++ b/src/Bundle/ChillPersonBundle/Validator/Constraints/Person/Birthdate.php
@@ -17,14 +17,14 @@
* along with this program. If not, see .
*/
-namespace Chill\PersonBundle\Validator\Constraints;
+namespace Chill\PersonBundle\Validator\Constraints\Person;
use Symfony\Component\Validator\Constraint;
/**
* Create a constraint on birth date: the birthdate after today are not allowed.
- *
- * It is possible to add a delay before today, expressed as described in
+ *
+ * It is possible to add a delay before today, expressed as described in
* interval_spec : http://php.net/manual/en/dateinterval.construct.php
* (this interval_spec itself is based on ISO8601 :
* https://en.wikipedia.org/wiki/ISO_8601#Durations)
@@ -34,9 +34,4 @@ use Symfony\Component\Validator\Constraint;
class Birthdate extends Constraint
{
public $message = "The birthdate must be before %date%";
-
- public function validatedBy()
- {
- return 'birthdate_not_before';
- }
}
diff --git a/src/Bundle/ChillPersonBundle/Validator/Constraints/BirthdateValidator.php b/src/Bundle/ChillPersonBundle/Validator/Constraints/Person/BirthdateValidator.php
similarity index 94%
rename from src/Bundle/ChillPersonBundle/Validator/Constraints/BirthdateValidator.php
rename to src/Bundle/ChillPersonBundle/Validator/Constraints/Person/BirthdateValidator.php
index cba955ef6..5d16be230 100644
--- a/src/Bundle/ChillPersonBundle/Validator/Constraints/BirthdateValidator.php
+++ b/src/Bundle/ChillPersonBundle/Validator/Constraints/Person/BirthdateValidator.php
@@ -17,49 +17,49 @@
* along with this program. If not, see .
*/
-namespace Chill\PersonBundle\Validator\Constraints;
+namespace Chill\PersonBundle\Validator\Constraints\Person;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
- *
+ *
*
* @author Julien Fastré
*/
class BirthdateValidator extends ConstraintValidator
{
private $interval_spec = null;
-
+
public function __construct($interval_spec = null)
{
$this->interval_spec = $interval_spec;
}
-
+
public function validate($value, Constraint $constraint)
{
if ($value === NULL) {
-
+
return;
}
-
+
if (!$value instanceof \DateTime) {
throw new \LogicException('The input should a be a \DateTime interface,'
. (is_object($value) ? get_class($value) : gettype($value)));
}
-
+
$limitDate = $this->getLimitDate();
-
+
if ($limitDate < $value) {
$this->context->buildViolation($constraint->message)
->setParameter('%date%', $limitDate->format('d-m-Y'))
->addViolation();
}
-
+
}
-
+
/**
- *
+ *
* @return \DateTime
*/
private function getLimitDate()