|
@@ -0,0 +1,131 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Tests\Controller;
|
|
|
+
|
|
|
+use App\Entity\Article;
|
|
|
+use Doctrine\ORM\EntityManagerInterface;
|
|
|
+use Doctrine\ORM\EntityRepository;
|
|
|
+use Symfony\Bundle\FrameworkBundle\KernelBrowser;
|
|
|
+use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
|
|
+
|
|
|
+final class ArticleControllerTest extends WebTestCase
|
|
|
+{
|
|
|
+ private KernelBrowser $client;
|
|
|
+ private EntityManagerInterface $manager;
|
|
|
+ private EntityRepository $repository;
|
|
|
+ private string $path = '/article/';
|
|
|
+
|
|
|
+ protected function setUp(): void
|
|
|
+ {
|
|
|
+ $this->client = static::createClient();
|
|
|
+ $this->manager = static::getContainer()->get('doctrine')->getManager();
|
|
|
+ $this->repository = $this->manager->getRepository(Article::class);
|
|
|
+
|
|
|
+ foreach ($this->repository->findAll() as $object) {
|
|
|
+ $this->manager->remove($object);
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->manager->flush();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testIndex(): void
|
|
|
+ {
|
|
|
+ $this->client->followRedirects();
|
|
|
+ $crawler = $this->client->request('GET', $this->path);
|
|
|
+
|
|
|
+ self::assertResponseStatusCodeSame(200);
|
|
|
+ self::assertPageTitleContains('Article index');
|
|
|
+
|
|
|
+ // Use the $crawler to perform additional assertions e.g.
|
|
|
+ // self::assertSame('Some text on the page', $crawler->filter('.p')->first());
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testNew(): void
|
|
|
+ {
|
|
|
+ $this->markTestIncomplete();
|
|
|
+ $this->client->request('GET', sprintf('%snew', $this->path));
|
|
|
+
|
|
|
+ self::assertResponseStatusCodeSame(200);
|
|
|
+
|
|
|
+ $this->client->submitForm('Save', [
|
|
|
+ 'article[title]' => 'Testing',
|
|
|
+ 'article[publicationDate]' => 'Testing',
|
|
|
+ 'article[content]' => 'Testing',
|
|
|
+ 'article[author]' => 'Testing',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ self::assertResponseRedirects($this->path);
|
|
|
+
|
|
|
+ self::assertSame(1, $this->repository->count([]));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testShow(): void
|
|
|
+ {
|
|
|
+ $this->markTestIncomplete();
|
|
|
+ $fixture = new Article();
|
|
|
+ $fixture->setTitle('My Title');
|
|
|
+ $fixture->setPublicationDate('My Title');
|
|
|
+ $fixture->setContent('My Title');
|
|
|
+ $fixture->setAuthor('My Title');
|
|
|
+
|
|
|
+ $this->manager->persist($fixture);
|
|
|
+ $this->manager->flush();
|
|
|
+
|
|
|
+ $this->client->request('GET', sprintf('%s%s', $this->path, $fixture->getId()));
|
|
|
+
|
|
|
+ self::assertResponseStatusCodeSame(200);
|
|
|
+ self::assertPageTitleContains('Article');
|
|
|
+
|
|
|
+ // Use assertions to check that the properties are properly displayed.
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testEdit(): void
|
|
|
+ {
|
|
|
+ $this->markTestIncomplete();
|
|
|
+ $fixture = new Article();
|
|
|
+ $fixture->setTitle('Value');
|
|
|
+ $fixture->setPublicationDate('Value');
|
|
|
+ $fixture->setContent('Value');
|
|
|
+ $fixture->setAuthor('Value');
|
|
|
+
|
|
|
+ $this->manager->persist($fixture);
|
|
|
+ $this->manager->flush();
|
|
|
+
|
|
|
+ $this->client->request('GET', sprintf('%s%s/edit', $this->path, $fixture->getId()));
|
|
|
+
|
|
|
+ $this->client->submitForm('Update', [
|
|
|
+ 'article[title]' => 'Something New',
|
|
|
+ 'article[publicationDate]' => 'Something New',
|
|
|
+ 'article[content]' => 'Something New',
|
|
|
+ 'article[author]' => 'Something New',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ self::assertResponseRedirects('/article/');
|
|
|
+
|
|
|
+ $fixture = $this->repository->findAll();
|
|
|
+
|
|
|
+ self::assertSame('Something New', $fixture[0]->getTitle());
|
|
|
+ self::assertSame('Something New', $fixture[0]->getPublicationDate());
|
|
|
+ self::assertSame('Something New', $fixture[0]->getContent());
|
|
|
+ self::assertSame('Something New', $fixture[0]->getAuthor());
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testRemove(): void
|
|
|
+ {
|
|
|
+ $this->markTestIncomplete();
|
|
|
+ $fixture = new Article();
|
|
|
+ $fixture->setTitle('Value');
|
|
|
+ $fixture->setPublicationDate('Value');
|
|
|
+ $fixture->setContent('Value');
|
|
|
+ $fixture->setAuthor('Value');
|
|
|
+
|
|
|
+ $this->manager->persist($fixture);
|
|
|
+ $this->manager->flush();
|
|
|
+
|
|
|
+ $this->client->request('GET', sprintf('%s%s', $this->path, $fixture->getId()));
|
|
|
+ $this->client->submitForm('Delete');
|
|
|
+
|
|
|
+ self::assertResponseRedirects('/article/');
|
|
|
+ self::assertSame(0, $this->repository->count([]));
|
|
|
+ }
|
|
|
+}
|