diff --git a/src/Bundle/ChillMainBundle/Tests/Controller/NewsItemControllerTest.php b/src/Bundle/ChillMainBundle/Tests/Controller/NewsItemControllerTest.php index c77983454..16d286887 100644 --- a/src/Bundle/ChillMainBundle/Tests/Controller/NewsItemControllerTest.php +++ b/src/Bundle/ChillMainBundle/Tests/Controller/NewsItemControllerTest.php @@ -27,45 +27,78 @@ class NewsItemControllerTest extends WebTestCase { use PrepareClientTrait; - protected function tearDown(): void + private static array $entitiesToDelete = []; + + private EntityManagerInterface $em; + + public function setUp(): void { - self::ensureKernelShutdown(); + self::bootKernel(); + $this->em = self::$container->get(EntityManagerInterface::class); + } - public function generateNewsItemIds(): iterable + public static function tearDownAfterClass(): void { self::bootKernel(); $em = self::$container->get(EntityManagerInterface::class); - $qb = $em->createQueryBuilder(); + foreach (self::$entitiesToDelete as [$class, $id]) { + $entity = $em->find($class, $id); + + if (null !== $entity) { + $em->remove($entity); + } + } + + $em->flush(); + } + + public function generateNewsItemIds(): iterable + { +/* $qb = $em->createQueryBuilder(); $newsItems = $qb->select('n')->from(NewsItem::class, 'n') ->setMaxResults(2) ->getQuery() - ->getResult(); + ->getResult();*/ - foreach ($newsItems as $n) { - yield [$n->getId()]; - } + $this->setUp(); - self::ensureKernelShutdown(); + $newsItem = new NewsItem(); + $newsItem->setTitle('Lorem Ipsum'); + $newsItem->setContent('some text'); + $newsItem->setStartDate(new \DateTimeImmutable('now')); + + $this->em->persist($newsItem); + + self::$entitiesToDelete[] = [NewsItem::class, $newsItem]; + + yield [$newsItem]; + + $this->em->flush(); + $this->em->clear(); } public function testList() { - $client = $this->getClientAuthenticated(); + $client = $this->getClientAuthenticated('admin', 'password'); $client->request('GET', '/fr/admin/news_item'); - self::assertResponseIsSuccessful('Test that news item admin page shows'); + self::assertResponseIsSuccessful('News item admin page shows'); } /** * @dataProvider generateNewsItemIds + * + * test gets skipped... why? */ - public function testShowSingleItem(int $newsItemId) + public function testShowSingleItem(NewsItem $newsItem) { - $client = $this->getClientAuthenticated(); - $client->request('GET', "/fr/amdin/news_item/{$newsItemId}/view"); + $client = $this->getClientAuthenticated('admin', 'password'); + $client->request('GET', "/fr/admin/news_item/{$newsItem->getId()}/view"); - $this->assertResponseIsSuccessful('test that single news item admin page loads successfully'); + self::assertResponseIsSuccessful('Single news item admin page loads successfully'); + + self::$entitiesToDelete[] = [NewsItem::class, $newsItem]; } }