getConstraint(); $person = new Person(); $this->validator->validate($person, $constraint); $this->assertNoViolation(); } public function testMembershipCovering() { $constraint = $this->getConstraint(); $person = new Person(); $household = new Household(); $position = (new Position()) ->setShareHousehold(true); $membership = (new HouseholdMember()) ->setPosition($position) ->setStartDate(new DateTimeImmutable('2010-01-01')) ->setPerson($person); $membership = (new HouseholdMember()) ->setPosition($position) ->setStartDate(new DateTimeImmutable('2011-01-01')) ->setPerson($person); $this->validator->validate($person, $constraint); $this->buildViolation('msg') ->setParameters([ '%person_name%' => 'name', '%from%' => '01-01-2011', '%nbHousehold%' => 2, ]) ->assertRaised(); } public function testMembershipCoveringNoShareHousehold() { $constraint = $this->getConstraint(); $person = new Person(); $household = new Household(); $position = (new Position()) ->setShareHousehold(false); $membership = (new HouseholdMember()) ->setPosition($position) ->setStartDate(new DateTimeImmutable('2010-01-01')) ->setPerson($person); $membership = (new HouseholdMember()) ->setPosition($position) ->setStartDate(new DateTimeImmutable('2011-01-01')) ->setPerson($person); $this->validator->validate($person, $constraint); $this->assertNoViolation(); } protected function createValidator() { $render = $this->createMock(PersonRender::class); $render->method('renderString') ->willReturn('name'); return new HouseholdMembershipSequentialValidator($render); } protected function getConstraint() { return new HouseholdMembershipSequential([ 'message' => 'msg', ]); } }