correct newsItemControllerTest

This commit is contained in:
Julie Lenaerts 2024-02-07 11:58:56 +01:00
parent 8f2409fc06
commit 85b91250fb

View File

@ -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];
}
}