DX: use more precise service parameter and use dataprovider for test

This commit is contained in:
Julien Fastré 2023-07-28 13:06:45 +02:00
parent 836cc7199e
commit 333579de06
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB

View File

@ -11,7 +11,9 @@ declare(strict_types=1);
namespace Chill\PersonBundle\Tests\Controller; namespace Chill\PersonBundle\Tests\Controller;
use Chill\MainBundle\Repository\CenterRepositoryInterface;
use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\Person;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/** /**
@ -20,57 +22,73 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
*/ */
final class PersonDuplicateControllerViewTest extends WebTestCase final class PersonDuplicateControllerViewTest extends WebTestCase
{ {
protected function setUp(): void public function providePersonData(): iterable
{ {
self::bootKernel(); self::bootKernel();
$this->em = self::$container /** @var EntityManagerInterface $em */
->get('doctrine.orm.entity_manager'); $em = self::$container->get(EntityManagerInterface::class);
/** @var CenterRepositoryInterface $centerRepository */
$centerRepository = self::$container->get(CenterRepositoryInterface::class);
$center = $this->em->getRepository(\Chill\MainBundle\Entity\Center::class) $center = $centerRepository->findOneBy(['name' => 'Center A']);
->findOneBy(['name' => 'Center A']); $person = (new Person())
$this->person = (new Person())
->setLastName('Tested Persan') ->setLastName('Tested Persan')
->setFirstName('Réginal') ->setFirstName('Réginal')
->setCenter($center) ->setCenter($center)
->setGender(Person::MALE_GENDER); ->setGender(Person::MALE_GENDER);
$this->em->persist($this->person); $em->persist($person);
$this->person2 = (new Person()) foreach ($person->getCenterHistory() as $centerHistory) {
$em->persist($centerHistory);
}
$person2 = (new Person())
->setLastName('Tested Person') ->setLastName('Tested Person')
->setFirstName('Réginald') ->setFirstName('Réginald')
->setCenter($center) ->setCenter($center)
->setGender(Person::MALE_GENDER); ->setGender(Person::MALE_GENDER);
$this->em->persist($this->person2); $em->persist($person2);
$this->em->flush(); foreach ($person2->getCenterHistory() as $centerHistory) {
$em->persist($centerHistory);
} }
public function testViewDuplicatePerson() $em->flush();
$em->clear();
yield [$person->getId(), $person2->getId()];
}
/**
* @dataProvider providePersonData
* @param int $personId
* @param int $person2Id
* @return void
*/
public function testViewDuplicatePerson(int $personId, int $person2Id): void
{ {
$client = self::createClient([], [ $client = self::createClient([], [
'PHP_AUTH_USER' => 'center a_social', 'PHP_AUTH_USER' => 'center a_social',
'PHP_AUTH_PW' => 'password', 'PHP_AUTH_PW' => 'password',
]); ]);
$crawler = $client->request('GET', '/en/person/' . $this->person->getId() . '/duplicate/view'); $crawler = $client->request('GET', '/en/person/' . $personId . '/duplicate/view');
$response = $client->getResponse(); $response = $client->getResponse();
var_dump(substr($crawler->html(), 0, 500));
$this->assertTrue($response->isSuccessful()); $this->assertTrue($response->isSuccessful());
$this->assertGreaterThan(0, $crawler->filter('html:contains("Find duplicate")')->count()); $this->assertGreaterThan(0, $crawler->filter('html:contains("Find duplicate")')->count());
$this->assertGreaterThan(0, $crawler->filter('html:contains("Réginal")')->count()); $this->assertGreaterThan(0, $crawler->filter('html:contains("Réginal")')->count());
$this->assertGreaterThan(0, $crawler->filter('html:contains("Réginald")')->count()); $this->assertGreaterThan(0, $crawler->filter('html:contains("Réginald")')->count());
$crawler = $client->request('GET', '/en/person/' . $this->person->getId() . '/duplicate/' . $this->person2->getId() . '/confirm'); $crawler = $client->request('GET', '/en/person/' . $personId . '/duplicate/' . $person2Id . '/confirm');
$response = $client->getResponse(); $response = $client->getResponse();
$this->assertTrue($response->isSuccessful()); $this->assertTrue($response->isSuccessful());
$this->assertGreaterThan(0, $crawler->filter('html:contains("Old person")')->count()); $this->assertGreaterThan(0, $crawler->filter('html:contains("Old person")')->count());
$this->assertGreaterThan(0, $crawler->filter('html:contains("New person")')->count()); $this->assertGreaterThan(0, $crawler->filter('html:contains("New person")')->count());
$crawler = $client->request('POST', '/en/person/' . $this->person->getId() . '/duplicate/' . $this->person2->getId() . '/confirm', [ $crawler = $client->request('POST', '/en/person/' . $personId . '/duplicate/' . $person2Id . '/confirm', [
'chill_personbundle_person_confirm_duplicate[confirm]' => 1, 'chill_personbundle_person_confirm_duplicate[confirm]' => 1,
]); ]);
$response = $client->getResponse(); $response = $client->getResponse();