mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-07-18 14:56:13 +00:00
Fix testMerge method in AccompanyingPeriodWorkMergeServiceTest.php
This commit is contained in:
parent
f383fab578
commit
837089ff5d
@ -14,22 +14,20 @@ namespace Chill\PersonBundle\Tests\Service\AccompanyingPeriodWork;
|
|||||||
use Chill\MainBundle\Entity\User;
|
use Chill\MainBundle\Entity\User;
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork;
|
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork;
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluation;
|
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluation;
|
||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkGoal;
|
|
||||||
use Chill\PersonBundle\Entity\SocialWork\Result;
|
|
||||||
use Chill\PersonBundle\Service\AccompanyingPeriodWork\AccompanyingPeriodWorkMergeService;
|
use Chill\PersonBundle\Service\AccompanyingPeriodWork\AccompanyingPeriodWorkMergeService;
|
||||||
use Chill\ThirdPartyBundle\Entity\ThirdParty;
|
use Chill\ThirdPartyBundle\Entity\ThirdParty;
|
||||||
use Doctrine\DBAL\Connection;
|
use Doctrine\DBAL\Connection;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Monolog\Test\TestCase;
|
|
||||||
use Prophecy\Argument;
|
use Prophecy\Argument;
|
||||||
use Prophecy\PhpUnit\ProphecyTrait;
|
use Prophecy\PhpUnit\ProphecyTrait;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*
|
*
|
||||||
* @coversNothing
|
* @coversNothing
|
||||||
*/
|
*/
|
||||||
class AccompanyingPeriodWorkMergeServiceTest extends TestCase
|
class AccompanyingPeriodWorkMergeServiceTest extends KernelTestCase
|
||||||
{
|
{
|
||||||
use ProphecyTrait;
|
use ProphecyTrait;
|
||||||
|
|
||||||
@ -160,46 +158,62 @@ class AccompanyingPeriodWorkMergeServiceTest extends TestCase
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMerge(): void
|
public function testMergeAccompanyingPeriodWorks(): void
|
||||||
{
|
{
|
||||||
$accompanyingPeriodWork = new AccompanyingPeriodWork();
|
$em = self::getContainer()->get(EntityManagerInterface::class);
|
||||||
$accompanyingPeriodWork->setStartDate(new \DateTime('2022-01-01'));
|
|
||||||
$accompanyingPeriodWork->addReferrer($userA = new User());
|
$userA = new User();
|
||||||
$accompanyingPeriodWork->addReferrer($userC = new User());
|
$userA->setUsername('someUser');
|
||||||
$accompanyingPeriodWork->addAccompanyingPeriodWorkEvaluation($evaluationA = new AccompanyingPeriodWorkEvaluation());
|
$userA->setEmail('someUser@example.com');
|
||||||
$accompanyingPeriodWork->setNote('blabla');
|
$em->persist($userA);
|
||||||
$accompanyingPeriodWork->addThirdParty($thirdPartyA = new ThirdParty());
|
|
||||||
|
$toKeep = new AccompanyingPeriodWork();
|
||||||
|
$toKeep->setStartDate(new \DateTime('2022-01-02'));
|
||||||
|
$toKeep->setNote('Keep note');
|
||||||
|
$toKeep->setCreatedBy($userA);
|
||||||
|
$toKeep->setUpdatedBy($userA);
|
||||||
|
$toKeep->addReferrer($userA);
|
||||||
|
$em->persist($toKeep);
|
||||||
|
|
||||||
|
$userB = new User();
|
||||||
|
$userB->setUsername('anotherUser');
|
||||||
|
$userB->setEmail('anotherUser@example.com');
|
||||||
|
$em->persist($userB);
|
||||||
|
|
||||||
$toDelete = new AccompanyingPeriodWork();
|
$toDelete = new AccompanyingPeriodWork();
|
||||||
$toDelete->setStartDate(new \DateTime('2022-01-01'));
|
$toDelete->setStartDate(new \DateTime('2022-01-01'));
|
||||||
$toDelete->addReferrer($userB = new User());
|
$toDelete->setNote('Delete note');
|
||||||
$toDelete->addReferrer($userC);
|
$toDelete->setCreatedBy($userB);
|
||||||
$toDelete->addAccompanyingPeriodWorkEvaluation($evaluationB = new AccompanyingPeriodWorkEvaluation());
|
$toDelete->setUpdatedBy($userB);
|
||||||
$toDelete->setNote('boum');
|
$toDelete->addReferrer($userB);
|
||||||
$toDelete->addThirdParty($thirdPartyB = new ThirdParty());
|
$em->persist($toDelete);
|
||||||
$toDelete->addGoal($goalA = new AccompanyingPeriodWorkGoal());
|
|
||||||
$toDelete->addResult($resultA = new Result());
|
|
||||||
|
|
||||||
$service = $this->buildMergeService($toDelete);
|
$evaluation = new AccompanyingPeriodWorkEvaluation();
|
||||||
$service->merge($accompanyingPeriodWork, $toDelete);
|
$evaluation->setAccompanyingPeriodWork($toDelete);
|
||||||
|
$em->persist($evaluation);
|
||||||
|
|
||||||
self::assertTrue($accompanyingPeriodWork->getReferrers()->contains($userA));
|
$em->flush();
|
||||||
self::assertTrue($accompanyingPeriodWork->getReferrers()->contains($userB));
|
|
||||||
self::assertTrue($accompanyingPeriodWork->getReferrers()->contains($userC));
|
|
||||||
|
|
||||||
self::assertTrue($accompanyingPeriodWork->getAccompanyingPeriodWorkEvaluations()->contains($evaluationA));
|
$service = new AccompanyingPeriodWorkMergeService($em);
|
||||||
self::assertTrue($accompanyingPeriodWork->getAccompanyingPeriodWorkEvaluations()->contains($evaluationB));
|
$merged = $service->merge($toKeep, $toDelete);
|
||||||
foreach ($accompanyingPeriodWork->getAccompanyingPeriodWorkEvaluations() as $evaluation) {
|
|
||||||
self::assertSame($accompanyingPeriodWork, $evaluation->getAccompanyingPeriodWork());
|
|
||||||
}
|
|
||||||
|
|
||||||
self::assertStringContainsString('blabla', $accompanyingPeriodWork->getNote());
|
$em->refresh($merged);
|
||||||
self::assertStringContainsString('boum', $toDelete->getNote());
|
|
||||||
|
|
||||||
self::assertTrue($accompanyingPeriodWork->getThirdParties()->contains($thirdPartyA));
|
// Assertions
|
||||||
self::assertTrue($accompanyingPeriodWork->getThirdParties()->contains($thirdPartyB));
|
|
||||||
|
|
||||||
self::assertTrue($accompanyingPeriodWork->getGoals()->contains($goalA));
|
$this->assertEquals(new \DateTime('2022-01-01'), $merged->getStartDate());
|
||||||
self::assertTrue($accompanyingPeriodWork->getResults()->contains($resultA));
|
|
||||||
|
$this->assertStringContainsString('Keep note', $merged->getNote());
|
||||||
|
$this->assertStringContainsString('Delete note', $merged->getNote());
|
||||||
|
|
||||||
|
$em->refresh($evaluation);
|
||||||
|
$this->assertEquals($toKeep->getId(), $evaluation->getAccompanyingPeriodWork()->getId());
|
||||||
|
|
||||||
|
$em->remove($evaluation);
|
||||||
|
$em->remove($toKeep);
|
||||||
|
$em->remove($toDelete);
|
||||||
|
$em->remove($userA);
|
||||||
|
$em->remove($userB);
|
||||||
|
$em->flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user