*/ private static array $entitiesToDelete = []; private readonly EntityManagerInterface $em; protected function tearDown(): void { self::ensureKernelShutdown(); } public static function tearDownAfterClass(): void { self::bootKernel(); $em = self::getContainer()->get(EntityManagerInterface::class); foreach (self::$entitiesToDelete as [$class, $id]) { $entity = $em->find($class, $id); if (null !== $entity) { $em->remove($entity); } } $em->flush(); } public static function generateNewsItemIds(): iterable { self::bootKernel(); $em = self::getContainer()->get(EntityManagerInterface::class); $newsItem = new NewsItem(); $newsItem->setTitle('Lorem Ipsum'); $newsItem->setContent('some text'); $newsItem->setStartDate(new \DateTimeImmutable('now')); $em->persist($newsItem); $em->flush(); self::$entitiesToDelete[] = [NewsItem::class, $newsItem]; self::ensureKernelShutdown(); yield [$newsItem]; } public function testList() { $client = $this->getClientAuthenticated('admin', 'password'); $client->request('GET', '/fr/admin/news_item'); self::assertResponseIsSuccessful('News item admin page shows'); } /** * @dataProvider generateNewsItemIds */ public function testShowSingleItem(NewsItem $newsItem) { $client = $this->getClientAuthenticated('admin', 'password'); $client->request('GET', "/fr/admin/news_item/{$newsItem->getId()}/view"); self::assertResponseIsSuccessful('Single news item admin page loads successfully'); } }