mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-29 10:05:03 +00:00
Merge branch 'master' into upgrade-sf5
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Chill is a software for social workers
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Tests\Controller\AccompanyingCoursWorkApiController;
|
||||
|
||||
use Chill\MainBundle\Repository\UserRepositoryInterface;
|
||||
use Chill\MainBundle\Test\PrepareClientTrait;
|
||||
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
||||
use Chill\PersonBundle\Entity\Person;
|
||||
use Chill\PersonBundle\Entity\SocialWork\SocialAction;
|
||||
use Chill\PersonBundle\Entity\SocialWork\SocialIssue;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @coversNothing
|
||||
*/
|
||||
class ConflictTest extends WebTestCase
|
||||
{
|
||||
use PrepareClientTrait;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
self::ensureKernelShutdown();
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
self::ensureKernelShutdown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider generateAccompanyingPeriodWork
|
||||
*
|
||||
* @throws \JsonException
|
||||
*/
|
||||
public function testWhenEditionAccompanyingPeriodWorkWithCurrentVersionNoConflictOccurs(AccompanyingPeriod\AccompanyingPeriodWork $work, int $personId): void
|
||||
{
|
||||
$client = $this->getClientAuthenticated();
|
||||
|
||||
$currentVersion = $work->getVersion();
|
||||
|
||||
$client->request(
|
||||
'PUT',
|
||||
"/api/1.0/person/accompanying-course/work/{$work->getid()}.json?entity_version={$currentVersion}",
|
||||
content: json_encode([
|
||||
'type' => 'accompanying_period_work',
|
||||
'id' => $work->getId(),
|
||||
'startDate' => [
|
||||
'datetime' => '2023-12-15T00:00:00+01:00',
|
||||
],
|
||||
'endDate' => null,
|
||||
'note' => 'This is a note',
|
||||
'accompanyingPeriodWorkEvaluations' => [],
|
||||
'goals' => [],
|
||||
'handlingThirdParty' => null,
|
||||
'persons' => [[
|
||||
'type' => 'person',
|
||||
'id' => $personId,
|
||||
],
|
||||
],
|
||||
'privateComment' => '',
|
||||
'refferers' => [],
|
||||
'results' => [],
|
||||
'thirdParties' => [],
|
||||
], JSON_THROW_ON_ERROR)
|
||||
);
|
||||
|
||||
self::assertResponseIsSuccessful();
|
||||
$w = json_decode($client->getResponse()->getContent(), true, 512, JSON_THROW_ON_ERROR);
|
||||
|
||||
self::assertEquals($work->getVersion() + 1, $w['version']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider generateAccompanyingPeriodWork
|
||||
*/
|
||||
public function testWhenEditingAccompanyingPeriodWorkWithPreviousVersionAnHttpConflictResponseOccurs(AccompanyingPeriod\AccompanyingPeriodWork $work, int $personId): void
|
||||
{
|
||||
$client = $this->getClientAuthenticated();
|
||||
|
||||
$previous = $work->getVersion() - 1;
|
||||
|
||||
$client->request(
|
||||
'PUT',
|
||||
"/api/1.0/person/accompanying-course/work/{$work->getid()}.json?entity_version={$previous}",
|
||||
content: json_encode([
|
||||
'type' => 'accompanying_period_work',
|
||||
'id' => $work->getId(),
|
||||
'startDate' => [
|
||||
'datetime' => '2023-12-15T00:00:00+01:00',
|
||||
],
|
||||
'endDate' => null,
|
||||
'note' => 'This is a note',
|
||||
'accompanyingPeriodWorkEvaluations' => [],
|
||||
'goals' => [],
|
||||
'handlingThirdParty' => null,
|
||||
'persons' => [[
|
||||
'type' => 'person',
|
||||
'id' => $personId,
|
||||
],
|
||||
],
|
||||
'privateComment' => '',
|
||||
'refferers' => [],
|
||||
'results' => [],
|
||||
'thirdParties' => [],
|
||||
], JSON_THROW_ON_ERROR)
|
||||
);
|
||||
|
||||
self::assertResponseStatusCodeSame(409);
|
||||
}
|
||||
|
||||
public function generateAccompanyingPeriodWork(): iterable
|
||||
{
|
||||
self::bootKernel();
|
||||
$em = self::$container->get(EntityManagerInterface::class);
|
||||
$userRepository = self::$container->get(UserRepositoryInterface::class);
|
||||
$user = $userRepository->findOneByUsernameOrEmail('center a_social');
|
||||
|
||||
$period = new AccompanyingPeriod();
|
||||
$em->persist($period);
|
||||
$period->addPerson(($p = new Person())->setFirstName('test')->setLastName('test')
|
||||
->setBirthdate(new \DateTime('1980-01-01'))->setGender(Person::BOTH_GENDER));
|
||||
$em->persist($p);
|
||||
$issue = (new SocialIssue())->setTitle(['fr' => 'test']);
|
||||
$em->persist($issue);
|
||||
$action = (new SocialAction())->setIssue($issue);
|
||||
$em->persist($action);
|
||||
|
||||
$work = new AccompanyingPeriod\AccompanyingPeriodWork();
|
||||
$work
|
||||
->setAccompanyingPeriod($period)
|
||||
->setStartDate(new \DateTimeImmutable())
|
||||
->addPerson($p)
|
||||
->setSocialAction($action)
|
||||
->setCreatedBy($user)
|
||||
->setUpdatedBy($user)
|
||||
;
|
||||
$em->persist($work);
|
||||
|
||||
$em->flush();
|
||||
|
||||
self::ensureKernelShutdown();
|
||||
|
||||
yield [$work, $p->getId()];
|
||||
}
|
||||
}
|
@@ -222,7 +222,7 @@ final class PersonControllerCreateTest extends WebTestCase
|
||||
Form &$creationForm,
|
||||
string $firstname = 'God',
|
||||
string $lastname = 'Jesus',
|
||||
\DateTime $birthdate = null
|
||||
?\DateTime $birthdate = null
|
||||
) {
|
||||
$creationForm->get(self::FIRSTNAME_INPUT)->setValue($firstname.'_'.uniqid());
|
||||
$creationForm->get(self::LASTNAME_INPUT)->setValue($lastname.'_'.uniqid());
|
||||
|
@@ -43,7 +43,9 @@ final class PersonControllerUpdateTest extends WebTestCase
|
||||
/**
|
||||
* Prepare client and create a random person.
|
||||
*/
|
||||
protected function setUp(): void {}
|
||||
protected function setUp(): void
|
||||
{
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
|
@@ -34,7 +34,7 @@ final class PersonControllerUpdateWithHiddenFieldsTest extends WebTestCase
|
||||
|
||||
private ?object $em = null;
|
||||
|
||||
private ?\Chill\PersonBundle\Entity\Person $person = null;
|
||||
private ?Person $person = null;
|
||||
|
||||
/**
|
||||
* @var string The url using for seeing the person's information
|
||||
|
@@ -23,7 +23,7 @@ final class PersonControllerViewWithHiddenFieldsTest extends WebTestCase
|
||||
{
|
||||
private ?object $em = null;
|
||||
|
||||
private ?\Chill\PersonBundle\Entity\Person $person = null;
|
||||
private ?Person $person = null;
|
||||
|
||||
/**
|
||||
* @var string The url to view the person details
|
||||
|
Reference in New Issue
Block a user