* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ namespace Chill\PersonBundle\Tests\Timeline; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Chill\PersonBundle\Entity\Person; use Chill\PersonBundle\Entity\AccompanyingPeriod; use Doctrine\ORM\EntityManagerInterface; use Chill\MainBundle\Test\PrepareClientTrait; /** * This class tests entries are shown for closing and opening * periods in timeline. * * @author Julien Fastré * @author Champs Libres */ class TimelineAccompanyingPeriodTest extends WebTestCase { use PrepareClientTrait; /** * @dataProvider provideDataPersonWithAccompanyingPeriod */ public function testEntriesAreShown($personId) { $client = $this->getClientAuthenticated(); $crawler = $client->request('GET', "/en/person/{$personId}/timeline"); $this->assertTrue($client->getResponse()->isSuccessful(), "the timeline page loads sucessfully"); $this->assertGreaterThan(0, $crawler->filter('.timeline div')->count(), "the timeline page contains multiple div inside a .timeline element"); $this->assertContains("est ouvert", $crawler->filter('.timeline')->text(), "the text 'est ouvert' is present"); } public function provideDataPersonWithAccompanyingPeriod() { self::bootKernel(); $qb = self::$container->get(EntityManagerInterface::class) ->createQueryBuilder() ; $personIds = $qb ->from(Person::class, 'p') ->join('p.accompanyingPeriodParticipations', 'part') ->join('part.accompanyingPeriod', 'period') ->join('p.center', 'center') ->select('p.id') ->where($qb->expr()->eq('center.name', ':center')) ->setParameter('center', 'Center A') ->setMaxResults(1000) ->getQuery() ->getResult() ; \shuffle($personIds); yield [ \array_pop($personIds)['id'] ]; yield [ \array_pop($personIds)['id'] ]; yield [ \array_pop($personIds)['id'] ]; } }