diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 25c5f0ff0..96f7461eb 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -10,7 +10,7 @@ - + @@ -31,6 +31,9 @@ src/Bundle/ChillPersonBundle/Tests/Controller/PersonDuplicateControllerViewTest.php + + src/Bundle/ChillCalendarBundle/Tests/ + diff --git a/src/Bundle/ChillCalendarBundle/Tests/Controller/CalendarControllerTest.php b/src/Bundle/ChillCalendarBundle/Tests/Controller/CalendarControllerTest.php index c94238a51..00fca668a 100644 --- a/src/Bundle/ChillCalendarBundle/Tests/Controller/CalendarControllerTest.php +++ b/src/Bundle/ChillCalendarBundle/Tests/Controller/CalendarControllerTest.php @@ -2,65 +2,72 @@ namespace Chill\CalendarBundle\Tests\Controller; +use Chill\PersonBundle\Repository\AccompanyingPeriodRepository; +use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpFoundation\Request; use Chill\PersonBundle\Entity\AccompanyingPeriod; class CalendarControllerTest extends WebTestCase { - - /** - * Setup before the first test of this class (see phpunit doc) - */ - public static function setUpBeforeClass() - { - static::bootKernel(); - } /** * Setup before each test method (see phpunit doc) */ public function setUp() { + static::bootKernel(); $this->client = static::createClient(array(), array( 'PHP_AUTH_USER' => 'center a_social', 'PHP_AUTH_PW' => 'password', )); } - - private function getAccompanyingPeriodFromFixtures(): AccompanyingPeriod + + public function provideAccompanyingPeriod(): iterable { - $em = static::$kernel->getContainer() - ->get('doctrine.orm.entity_manager'); + static::bootKernel(); + $em= static::$container->get(EntityManagerInterface::class); - $accompanying_period = $em->getRepository('ChillPersonBundle:AccompanyingPeriod')->find(1); + $nb = $em->createQueryBuilder() + ->from(AccompanyingPeriod::class, 'ac') + ->select('COUNT(ac) AS nb') + ->getQuery() + ->getSingleScalarResult() + ; - if ($accompanying_period === NULL) { - throw new \RuntimeException("We need an accompanying course with id = 1. Did you add fixtures ?"); - } - - return $accompanying_period; + yield [ $em->createQueryBuilder() + ->from(AccompanyingPeriod::class, 'ac') + ->select('ac.id') + ->setFirstResult(\random_int(0, $nb)) + ->setMaxResults(1) + ->getQuery() + ->getSingleScalarResult() + ]; } - public function testList() + /** + * @dataProvider provideAccompanyingPeriod + */ + public function testList(int $accompanyingPeriodId) { $this->client->request( - Request::METHOD_GET, - sprintf('/fr/calendar/?accompanying_period_id=%d', $this->getAccompanyingPeriodFromFixtures()->getId()) + Request::METHOD_GET, + sprintf('/fr/calendar/calendar/?accompanying_period_id=%d', $accompanyingPeriodId) ); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); } - - public function testNew() + /** + * @dataProvider provideAccompanyingPeriod + */ + public function testNew(int $accompanyingPeriodId) { $this->client->request( - Request::METHOD_GET, - sprintf('/fr/calendar/new?accompanying_period_id=%d', $this->getAccompanyingPeriodFromFixtures()->getId()) + Request::METHOD_GET, + sprintf('/fr/calendar/calendar/new?accompanying_period_id=%d', $accompanyingPeriodId) ); $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); } - }