PersonAddressMove: fix tests, address history on household, and household::getMembersOnRange

This commit is contained in:
2022-02-21 00:12:57 +01:00
parent caa63ea97a
commit 4f4b1bfbaa
9 changed files with 288 additions and 210 deletions

View File

@@ -14,8 +14,10 @@ namespace Entity\Household;
use Chill\MainBundle\Entity\Address;
use Chill\PersonBundle\Entity\Household\Household;
use Chill\PersonBundle\Entity\Household\HouseholdComposition;
use DateTimeImmutable;
use Chill\PersonBundle\Entity\Household\HouseholdMember;
use Chill\PersonBundle\Entity\Person;
use DateTime;
use DateTimeImmutable;
use PHPUnit\Framework\TestCase;
/**
@@ -24,27 +26,47 @@ use PHPUnit\Framework\TestCase;
*/
final class HouseholdTest extends TestCase
{
public function testHouseholdComposition()
public function testGetMembersOnRange()
{
$household = new Household();
$household->addComposition(($first = new HouseholdComposition())
->setStartDate(new DateTimeImmutable('2021-12-01')));
$household->addMember($householdMemberA = (new HouseholdMember())
->setStartDate(new DateTimeImmutable('2020-01-01'))
->setEndDate(new DateTimeImmutable('2020-12-31'))
->setPerson(new Person()));
$household->addMember($householdMemberB = (new HouseholdMember())
->setStartDate(new DateTimeImmutable('2020-06-01'))
->setEndDate(new DateTimeImmutable('2021-06-31'))
->setPerson(new Person()));
$household->addMember($householdMemberC = (new HouseholdMember())
->setStartDate(new DateTimeImmutable('2021-01-01'))
->setEndDate(null)
->setPerson(new Person()));
$this->assertNull($first->getEndDate());
$members = $household->getMembersOnRange(new DateTimeImmutable('2019-01-01'), null);
$household->addComposition(($second = new HouseholdComposition())
->setStartDate(new DateTimeImmutable('2021-12-31')));
$this->assertCount(3, $members);
$this->assertContains($householdMemberA, $members);
$this->assertContains($householdMemberB, $members);
$this->assertContains($householdMemberC, $members);
$this->assertEquals(new DateTimeImmutable('2021-12-31'), $first->getEndDate());
$this->assertEquals(new DateTimeImmutable('2021-12-31'), $second->getStartDate());
$members = $household->getMembersOnRange(new DateTimeImmutable('2020-01-01'), new DateTimeImmutable('2020-07-01'));
$this->assertCount(2, $members);
$this->assertContains($householdMemberA, $members);
$this->assertContains($householdMemberB, $members);
$this->assertNotContains($householdMemberC, $members);
$household->addComposition(($inside = new HouseholdComposition())
->setStartDate(new DateTimeImmutable('2021-12-15')));
$members = $household->getMembersOnRange(new DateTimeImmutable('2020-01-01'), new DateTimeImmutable('2022-12-31'));
$this->assertCount(3, $members);
$this->assertContains($householdMemberA, $members);
$this->assertContains($householdMemberB, $members);
$this->assertContains($householdMemberC, $members);
$this->assertEquals(new DateTimeImmutable('2021-12-15'), $first->getEndDate());
$this->assertEquals(new DateTimeImmutable('2021-12-31'), $second->getStartDate());
$this->assertEquals(new DateTimeImmutable('2021-12-31'), $inside->getEndDate());
$members = $household->getMembersOnRange(new DateTimeImmutable('2021-01-01'), new DateTimeImmutable('2022-12-31'));
$this->assertCount(2, $members);
$this->assertNotContains($householdMemberA, $members);
$this->assertContains($householdMemberB, $members);
$this->assertContains($householdMemberC, $members);
}
public function testHouseholdAddressConsistent()
@@ -72,7 +94,7 @@ final class HouseholdTest extends TestCase
$this->assertNull($lastAddress->getValidTo());
$futureAddress = new Address();
$futureAddress->setValidFrom(new DateTime('tomorrow'));
$futureAddress->setValidFrom($tomorrow = new DateTime('tomorrow'));
$household->addAddress($futureAddress);
$addresses = $household->getAddressesOrdered();
@@ -83,6 +105,31 @@ final class HouseholdTest extends TestCase
$this->assertEquals($oneMonthAgo, $previousAddress->getValidFrom());
$this->assertEquals($yesterday, $previousAddress->getValidTo());
$this->assertEquals($yesterday, $lastAddress->getValidFrom());
$this->assertNull($lastAddress->getValidTo());
$this->assertEquals($tomorrow, $lastAddress->getValidTo());
$this->assertEquals($tomorrow, $futureAddress->getValidFrom());
$this->assertNull($futureAddress->getValidTo());
}
public function testHouseholdComposition()
{
$household = new Household();
$household->addComposition(($first = new HouseholdComposition())
->setStartDate(new DateTimeImmutable('2021-12-01')));
$this->assertNull($first->getEndDate());
$household->addComposition(($second = new HouseholdComposition())
->setStartDate(new DateTimeImmutable('2021-12-31')));
$this->assertEquals(new DateTimeImmutable('2021-12-31'), $first->getEndDate());
$this->assertEquals(new DateTimeImmutable('2021-12-31'), $second->getStartDate());
$household->addComposition(($inside = new HouseholdComposition())
->setStartDate(new DateTimeImmutable('2021-12-15')));
$this->assertEquals(new DateTimeImmutable('2021-12-15'), $first->getEndDate());
$this->assertEquals(new DateTimeImmutable('2021-12-31'), $second->getStartDate());
$this->assertEquals(new DateTimeImmutable('2021-12-31'), $inside->getEndDate());
}
}