mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-14 06:14:23 +00:00
117 lines
2.9 KiB
PHP
117 lines
2.9 KiB
PHP
<?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 Chill\TaskBundle\Tests\Controller;
|
|
|
|
use Chill\MainBundle\Entity\Center;
|
|
use Chill\MainBundle\Tests\TestHelper;
|
|
use Faker;
|
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
|
use function array_filter;
|
|
use function array_rand;
|
|
|
|
/**
|
|
* @internal
|
|
* @coversNothing
|
|
*/
|
|
final class SingleTaskControllerTest extends WebTestCase
|
|
{
|
|
/**
|
|
* @var Faker\Generator
|
|
*/
|
|
protected $faker;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
self::bootKernel();
|
|
$this->faker = Faker\Factory::create('fr');
|
|
}
|
|
|
|
public function testNew()
|
|
{
|
|
$client = self::createClient(
|
|
[],
|
|
TestHelper::getAuthenticatedClientOptions()
|
|
);
|
|
$person = $this->getRandomPerson('Center A');
|
|
|
|
$crawler = $client->request('GET', '/fr/task/single-task/new', [
|
|
'person_id' => $person->getId(),
|
|
]);
|
|
var_dump($crawler->text());
|
|
|
|
$this->assertTrue($client->getResponse()->isSuccessful());
|
|
|
|
$form = $crawler->selectButton('Envoi')->form();
|
|
|
|
$title = $this->faker->sentence;
|
|
$circles = $form->get('circle')
|
|
->availableOptionsValues();
|
|
|
|
$client->submit($form, [
|
|
'title' => $title,
|
|
'circle' => $circles[array_rand($circles)],
|
|
]);
|
|
|
|
$this->assertTrue($client->getResponse()->isRedirect(sprintf(
|
|
'/fr/task/task/list/%d',
|
|
$person->getId()
|
|
)));
|
|
|
|
$crawler = $client->followRedirect();
|
|
|
|
$this->assertStringContainsString(
|
|
$title,
|
|
$crawler->text(),
|
|
'Assert that newly created task title is shown in list page'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @param mixed $centerName
|
|
*
|
|
* @return \Chill\PersonBundle\Entity\Person
|
|
*/
|
|
protected function getRandomPerson($centerName)
|
|
{
|
|
$em = self::$kernel
|
|
->getContainer()
|
|
->get('doctrine.orm.entity_manager');
|
|
|
|
$centers = $em
|
|
->getRepository(Center::class)
|
|
->findAll();
|
|
|
|
$center = array_filter(
|
|
$centers,
|
|
static function (Center $c) use ($centerName) {
|
|
return $c->getName() === $centerName;
|
|
}
|
|
)[0];
|
|
|
|
$ids = $em
|
|
->createQuery(
|
|
'SELECT p.id FROM ChillPersonBundle:Person p '
|
|
. 'WHERE p.center = :center'
|
|
)
|
|
->setParameter('center', $center)
|
|
->getResult();
|
|
|
|
$id = $ids[array_rand($ids)];
|
|
|
|
return self::$kernel
|
|
->getContainer()
|
|
->get('doctrine.orm.entity_manager')
|
|
->getRepository(\Chill\PersonBundle\Entity\Person::class)
|
|
->find($id);
|
|
}
|
|
}
|