* * 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\Entity; use Chill\PersonBundle\Entity\AccompanyingPeriod; use Chill\PersonBundle\Entity\Person; class AccompanyingPeriodTest extends \PHPUnit\Framework\TestCase { public function testClosingIsAfterOpeningConsistency() { $datetime1 = new \DateTime('now'); $datetime2 = new \DateTime('tomorrow'); $period = new AccompanyingPeriod($datetime1); $period->setClosingDate($datetime2); $r = $period->isClosingAfterOpening(); $this->assertTrue($r); } public function testClosingIsBeforeOpeningConsistency() { $datetime1 = new \DateTime('tomorrow'); $datetime2 = new \DateTime('now'); $period = new AccompanyingPeriod($datetime1); $period->setClosingDate($datetime2); $this->assertFalse($period->isClosingAfterOpening()); } public function testClosingEqualOpening() { $datetime = new \DateTime('now'); $period = new AccompanyingPeriod($datetime); $period->setClosingDate($datetime); $this->assertTrue($period->isClosingAfterOpening()); } public function testIsOpen() { $period = new AccompanyingPeriod(new \DateTime()); $this->assertTrue($period->isOpen()); } public function testIsClosed() { $period = new AccompanyingPeriod(new \DateTime()); $period->setClosingDate(new \DateTime('tomorrow')); $this->assertFalse($period->isOpen()); } public function testPersonPeriod() { $person = new Person(); $person2 = new Person(); $person3 = new Person(); $period = new AccompanyingPeriod(new \DateTime()); $period->addPerson($person); $period->addPerson($person2); $period->addPerson($person3); $this->assertEquals(3, $period->getParticipations()->count()); $this->assertTrue($period->containsPerson($person)); $this->assertFalse($period->containsPerson(new Person())); $participation = $period->getOpenParticipationContainsPerson($person); $participations = $period->getParticipationsContainsPerson($person); $this->assertNotNull($participation); $this->assertSame($person, $participation->getPerson()); $this->assertEquals(1, $participations->count()); $participationL = $period->removePerson($person); $this->assertSame($participationL, $participation); $this->assertTrue($participation->getEndDate() instanceof \DateTimeInterface); $participation = $period->getOpenParticipationContainsPerson($person); $this->assertNull($participation); } }