WIP [centerHistory] Try to get test to work for personCenterHistory

This commit is contained in:
Julie Lenaerts 2023-08-03 11:40:47 +02:00
parent fd79692f6d
commit 3af065e530
3 changed files with 37 additions and 15 deletions

View File

@ -4,11 +4,11 @@ namespace Chill\PersonBundle\Actions\Remove\Handler;
use Chill\PersonBundle\Actions\Remove\PersonMoveSqlHandlerInterface; use Chill\PersonBundle\Actions\Remove\PersonMoveSqlHandlerInterface;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Doctrine\ORM\EntityManagerInterface; use Chill\PersonBundle\Repository\Person\PersonCenterHistoryRepository;
class PersonMoveCenterHistoryHandler implements PersonMoveSqlHandlerInterface class PersonMoveCenterHistoryHandler implements PersonMoveSqlHandlerInterface
{ {
public function __construct(private EntityManagerInterface $em) public function __construct(private PersonCenterHistoryRepository $centerHistoryRepository)
{ {
} }
@ -23,15 +23,13 @@ class PersonMoveCenterHistoryHandler implements PersonMoveSqlHandlerInterface
$oldestDateA = null; $oldestDateA = null;
$oldestDateB = null; $oldestDateB = null;
$centerHistoriesA = $this->em->getRepository(Person\PersonCenterHistory::class)->findBy(['person' => $from->getId()]); $centerHistoriesA = $this->centerHistoryRepository->findBy(['person' => $from]);
// $centerHistoriesA = $from->getCenterHistory()->toArray();
$datesArrayA = array_map(fn($centerHistory) => $centerHistory->getStartDate(), $centerHistoriesA); $datesArrayA = array_map(fn($centerHistory) => $centerHistory->getStartDate(), $centerHistoriesA);
if (!count($datesArrayA) === 0) { if (!count($datesArrayA) === 0) {
$oldestDateA = min($datesArrayA); $oldestDateA = min($datesArrayA);
} }
$centerHistoriesB = $this->em->getRepository(Person\PersonCenterHistory::class)->findBy(['person' => $to->getId()]); $centerHistoriesB = $this->centerHistoryRepository->findBy(['person' => $to]);
// $centerHistoriesB = $to->getCenterHistory()->toArray();
$datesArrayB = array_map(fn($centerHistory) => $centerHistory->getStartDate(), $centerHistoriesB); $datesArrayB = array_map(fn($centerHistory) => $centerHistory->getStartDate(), $centerHistoriesB);
if (!count($datesArrayB) === 0) { if (!count($datesArrayB) === 0) {

View File

@ -1606,6 +1606,15 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
return $this; return $this;
} }
public function addCenterHistory(PersonCenterHistory $newCenterHistory): self
{
if (!$this->centerHistory->contains($newCenterHistory)) {
$this->centerHistory[] = $newCenterHistory;
$newCenterHistory->setPerson($this);
}
return $this;
}
/** /**
* @return Person * @return Person
*/ */

View File

@ -85,20 +85,38 @@ class PersonMoveTest extends KernelTestCase
$centerA = ($this->em->getRepository(Center::class))->find(1); $centerA = ($this->em->getRepository(Center::class))->find(1);
$centerB = ($this->em->getRepository(Center::class))->find(2); $centerB = ($this->em->getRepository(Center::class))->find(2);
$personCenterHistoryAFirst = (new Person\PersonCenterHistory())->setPerson($personA)->setCenter($centerA)->setStartDate(new \DateTimeImmutable('2023-01-01'))->setEndDate(new \DateTimeImmutable('2023-06-30'));
$personCenterHistoryASecond = (new Person\PersonCenterHistory())->setPerson($personA)->setCenter($centerB)->setStartDate(new \DateTimeImmutable('2023-06-30'))->setEndDate(new \DateTimeImmutable('2023-09-30'));
$personCenterHistoryBFirst = (new Person\PersonCenterHistory())->setPerson($personB)->setCenter($centerA)->setStartDate(new \DateTimeImmutable('2023-01-01'))->setEndDate(new \DateTimeImmutable('2023-07-15'));
$personCenterHistoryBSecond = (new Person\PersonCenterHistory())->setPerson($personB)->setCenter($centerB)->setStartDate(new \DateTimeImmutable('2023-07-15'))->setEndDate(new \DateTimeImmutable('2023-09-30'));
$this->em->persist($personA); $this->em->persist($personA);
$this->em->persist($personB); $this->em->persist($personB);
$personCenterHistoryAFirst = (new Person\PersonCenterHistory())->setCenter($centerA)->setStartDate(new \DateTimeImmutable('2023-01-01'))->setEndDate(new \DateTimeImmutable('2023-06-30'));
$personCenterHistoryASecond = (new Person\PersonCenterHistory())->setCenter($centerB)->setStartDate(new \DateTimeImmutable('2023-06-30'))->setEndDate(new \DateTimeImmutable('2023-09-30'));
$personCenterHistoryBFirst = (new Person\PersonCenterHistory())->setCenter($centerA)->setStartDate(new \DateTimeImmutable('2023-01-01'))->setEndDate(new \DateTimeImmutable('2023-07-15'));
$personCenterHistoryBSecond = (new Person\PersonCenterHistory())->setCenter($centerB)->setStartDate(new \DateTimeImmutable('2023-07-15'))->setEndDate(new \DateTimeImmutable('2023-09-30'));
// $personA->getCenterHistory()->add($personCenterHistoryAFirst);
// $personA->getCenterHistory()->add($personCenterHistoryASecond);
// $personB->getCenterHistory()->add($personCenterHistoryBFirst);
// $personB->getCenterHistory()->add($personCenterHistoryBSecond);
// $personCenterHistoryAFirst->setPerson($personA);
// $personCenterHistoryASecond->setPerson($personA);
// $personCenterHistoryBFirst->setPerson($personB);
// $personCenterHistoryBSecond->setPerson($personB);
$this->em->persist($personCenterHistoryAFirst); $this->em->persist($personCenterHistoryAFirst);
$this->em->persist($personCenterHistoryASecond); $this->em->persist($personCenterHistoryASecond);
$this->em->persist($personCenterHistoryBFirst); $this->em->persist($personCenterHistoryBFirst);
$this->em->persist($personCenterHistoryBSecond); $this->em->persist($personCenterHistoryBSecond);
$personA->addCenterHistory($personCenterHistoryAFirst);
$personA->addCenterHistory($personCenterHistoryASecond);
$personB->addCenterHistory($personCenterHistoryBFirst);
$personB->addCenterHistory($personCenterHistoryBSecond);
$this->em->flush(); $this->em->flush();
// $this->em->refresh($personA);
// $this->em->refresh($personB);
$this->em->clear(); $this->em->clear();
$move = new PersonMove($this->em, $this->personMoveManager, $this->eventDispatcher); $move = new PersonMove($this->em, $this->personMoveManager, $this->eventDispatcher);
@ -112,13 +130,10 @@ class PersonMoveTest extends KernelTestCase
$personA = $this->em->find(Person::class, $personA->getId()); $personA = $this->em->find(Person::class, $personA->getId());
$personB = $this->em->find(Person::class, $personB->getId()); $personB = $this->em->find(Person::class, $personB->getId());
$remainingCenterHistory = $this->em->getRepository(Person\PersonCenterHistory::class)->findBy(['person' => $personB]);
$message = 'Move persons with overlapping center histories'; $message = 'Move persons with overlapping center histories';
self::assertNull($personA?->getId(), $message); self::assertNull($personA?->getId(), $message);
self::assertNotNull($personB?->getId(), $message); self::assertNotNull($personB?->getId(), $message);
self::assertEquals(new \DateTimeImmutable('2023-01-01'), $remainingCenterHistory->getStartDate());
self::$entitiesToDelete[] = [Person::class, $personA]; self::$entitiesToDelete[] = [Person::class, $personA];
self::$entitiesToDelete[] = [Person::class, $personB]; self::$entitiesToDelete[] = [Person::class, $personB];