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']]; } /** * @dataProvider provideDataPersonWithAccompanyingPeriod * * @param mixed $personId */ 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->assertStringContainsString( 'est ouvert', $crawler->filter('.timeline')->text(), "the text 'est ouvert' is present" ); } }