diff --git a/src/Controller/PostController.php b/src/Controller/PostController.php
index 79dbc44..484a494 100644
--- a/src/Controller/PostController.php
+++ b/src/Controller/PostController.php
@@ -2,66 +2,86 @@
namespace App\Controller;
-use App\Repository\PostRepository;
-use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
-use Symfony\Component\Routing\Attribute\Route;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
use App\Entity\Post;
use App\Form\PostType;
+use App\Repository\PostRepository;
use Doctrine\ORM\EntityManagerInterface;
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
+#[Route('/post')]
class PostController extends AbstractController
{
- #[Route('/', name: 'app_posts')]
- public function index(PostRepository $repository): Response
+ #[Route('/', name: 'app_post_index', methods: ['GET'])]
+ public function index(PostRepository $postRepository): Response
{
- $posts = $repository->findAll();
return $this->render('post/index.html.twig', [
- 'posts' => $posts,
+ 'posts' => $postRepository->findAll(),
]);
}
- #[Route('/posts/add', name: 'app_add_posts')]
+ #[Route('/new', name: 'app_post_new', methods: ['GET', 'POST'])]
#[IsGranted('ROLE_USER', message: 'You must be logged in to access this page.')]
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$post = new Post();
-
$form = $this->createForm(PostType::class, $post);
-
$form->handleRequest($request);
+
if ($form->isSubmitted() && $form->isValid()) {
- $post = $form->getData();
- $post->setPublicationDate(new \DateTimeImmutable("now"));
-
$entityManager->persist($post);
$entityManager->flush();
- return $this->redirectToRoute('app_add_posts');
+ return $this->redirectToRoute('app_post_index', [], Response::HTTP_SEE_OTHER);
}
- return $this->render('post/post.html.twig', [
+ return $this->render('post/new.html.twig', [
+ 'post' => $post,
'form' => $form,
]);
}
- #[Route('/posts/edit/{id}', name: 'app_edit_post')]
+ #[Route('/{id}', name: 'app_post_show', methods: ['GET'])]
+ public function show(Post $post): Response
+ {
+ return $this->render('post/show.html.twig', [
+ 'post' => $post,
+ ]);
+ }
+
+ #[Route('/{id}/edit', name: 'app_post_edit', methods: ['GET', 'POST'])]
#[IsGranted('ROLE_USER', message: 'You must be logged in to access this page.')]
- public function edit(Request $request, EntityManagerInterface $entityManager, Post $post): Response
+ public function edit(Request $request, Post $post, EntityManagerInterface $entityManager): Response
{
$form = $this->createForm(PostType::class, $post);
$form->handleRequest($request);
+ if ($form->isSubmitted() && $form->isValid()) {
+ $entityManager->flush();
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
- return $this->redirectToRoute('app_posts');
+ return $this->redirectToRoute('app_post_index', [], Response::HTTP_SEE_OTHER);
}
return $this->render('post/edit.html.twig', [
- 'form' => $form->createView(),
+ 'post' => $post,
+ 'form' => $form,
]);
}
+
+ #[Route('/{id}', name: 'app_post_delete', methods: ['POST'])]
+ #[IsGranted('ROLE_USER', message: 'You must be logged in to access this page.')]
+ public function delete(Request $request, Post $post, EntityManagerInterface $entityManager): Response
+ {
+ if ($this->isCsrfTokenValid('delete'.$post->getId(), $request->getPayload()->get('_token'))) {
+ $entityManager->remove($post);
+ $entityManager->flush();
+ }
+
+ return $this->redirectToRoute('app_post_index', [], Response::HTTP_SEE_OTHER);
+ }
}
diff --git a/src/Controller/SpeciesController.php b/src/Controller/SpeciesController.php
index 4a2b7c2..4e5d4cf 100644
--- a/src/Controller/SpeciesController.php
+++ b/src/Controller/SpeciesController.php
@@ -2,37 +2,84 @@
namespace App\Controller;
+use App\Entity\Species;
+use App\Form\SpeciesType;
+use App\Repository\SpeciesRepository;
+use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
-use App\Entity\Species;
-use App\Form\SpeciesType;
-use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
+#[Route('/species')]
class SpeciesController extends AbstractController
{
- #[Route('/species/add', name: 'app_add_species')]
+ #[Route('/', name: 'app_species_index', methods: ['GET'])]
+ public function index(SpeciesRepository $speciesRepository): Response
+ {
+ return $this->render('species/index.html.twig', [
+ 'species' => $speciesRepository->findAll(),
+ ]);
+ }
+
+ #[Route('/new', name: 'app_species_new', methods: ['GET', 'POST'])]
#[IsGranted('ROLE_USER', message: 'You must be logged in to access this page.')]
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$species = new Species();
$form = $this->createForm(SpeciesType::class, $species);
-
$form->handleRequest($request);
- if ($form->isSubmitted() && $form->isValid()) {
- $species = $form->getData();
-
+ if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($species);
$entityManager->flush();
- return $this->redirectToRoute('app_add_species');
+ return $this->redirectToRoute('app_species_index', [], Response::HTTP_SEE_OTHER);
}
- return $this->render('species/species.html.twig', [
- 'form' => $form->createView(),
+ return $this->render('species/new.html.twig', [
+ 'species' => $species,
+ 'form' => $form,
]);
}
+
+ #[Route('/{id}', name: 'app_species_show', methods: ['GET'])]
+ public function show(Species $species): Response
+ {
+ return $this->render('species/show.html.twig', [
+ 'species' => $species,
+ ]);
+ }
+
+ #[Route('/{id}/edit', name: 'app_species_edit', methods: ['GET', 'POST'])]
+ #[IsGranted('ROLE_USER', message: 'You must be logged in to access this page.')]
+ public function edit(Request $request, Species $species, EntityManagerInterface $entityManager): Response
+ {
+ $form = $this->createForm(SpeciesType::class, $species);
+ $form->handleRequest($request);
+
+ if ($form->isSubmitted() && $form->isValid()) {
+ $entityManager->flush();
+
+ return $this->redirectToRoute('app_species_index', [], Response::HTTP_SEE_OTHER);
+ }
+
+ return $this->render('species/edit.html.twig', [
+ 'species' => $species,
+ 'form' => $form,
+ ]);
+ }
+
+ #[Route('/{id}', name: 'app_species_delete', methods: ['POST'])]
+ #[IsGranted('ROLE_USER', message: 'You must be logged in to access this page.')]
+ public function delete(Request $request, Species $species, EntityManagerInterface $entityManager): Response
+ {
+ if ($this->isCsrfTokenValid('delete'.$species->getId(), $request->getPayload()->get('_token'))) {
+ $entityManager->remove($species);
+ $entityManager->flush();
+ }
+
+ return $this->redirectToRoute('app_species_index', [], Response::HTTP_SEE_OTHER);
+ }
}
diff --git a/src/Form/PostType.php b/src/Form/PostType.php
index ceaff2c..bea7e6f 100644
--- a/src/Form/PostType.php
+++ b/src/Form/PostType.php
@@ -6,19 +6,16 @@ use App\Entity\Post;
use App\Entity\Species;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
-use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
-use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class PostType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
- ->add('foundDate', DateTimeType::class, [
+ ->add('foundDate', null, [
'widget' => 'single_text',
- 'empty_data' => null,
])
->add('latitude')
->add('longitude')
@@ -28,7 +25,7 @@ class PostType extends AbstractType
'class' => Species::class,
'choice_label' => 'scientific_name',
])
- ->add('save', SubmitType::class, ['label' => 'Create Post']);
+
;
}
diff --git a/src/Form/SpeciesType.php b/src/Form/SpeciesType.php
index 0d6cab9..ae3b919 100644
--- a/src/Form/SpeciesType.php
+++ b/src/Form/SpeciesType.php
@@ -6,7 +6,6 @@ use App\Entity\Species;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
-use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class SpeciesType extends AbstractType
{
@@ -16,7 +15,7 @@ class SpeciesType extends AbstractType
->add('scientific_name')
->add('vernacular_name')
->add('region')
- ->add('save', SubmitType::class, ['label' => 'Create Species']);
+ ;
}
public function configureOptions(OptionsResolver $resolver): void
diff --git a/templates/post/_delete_form.html.twig b/templates/post/_delete_form.html.twig
new file mode 100644
index 0000000..1223c9b
--- /dev/null
+++ b/templates/post/_delete_form.html.twig
@@ -0,0 +1,4 @@
+
diff --git a/templates/post/_form.html.twig b/templates/post/_form.html.twig
new file mode 100644
index 0000000..bf20b98
--- /dev/null
+++ b/templates/post/_form.html.twig
@@ -0,0 +1,4 @@
+{{ form_start(form) }}
+ {{ form_widget(form) }}
+
+{{ form_end(form) }}
diff --git a/templates/post/edit.html.twig b/templates/post/edit.html.twig
index 1c8e0bb..16b6b5f 100644
--- a/templates/post/edit.html.twig
+++ b/templates/post/edit.html.twig
@@ -5,11 +5,9 @@
{% block body %}
Edit Post
- {{ form_start(form) }}
- {{ form_widget(form) }}
+ {{ include('post/_form.html.twig', {'button_label': 'Update'}) }}
-
- {{ form_end(form) }}
+ back to list
- Back to posts
-{% endblock %}
\ No newline at end of file
+ {{ include('post/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/post/index.html.twig b/templates/post/index.html.twig
index 94f3756..49ca738 100644
--- a/templates/post/index.html.twig
+++ b/templates/post/index.html.twig
@@ -1,11 +1,45 @@
{% extends 'base.html.twig' %}
-{% block title %}Posts!{% endblock %}
+{% block title %}Post index{% endblock %}
{% block body %}
-{% for post in posts %}
-
- #{{ post.id }} trouvé le {{ post.foundDate | date("d/m/Y \\à H \\h") }}
-
-{% endfor %}
+ Post index
+
+
+
+
+ Id |
+ FoundDate |
+ PublicationDate |
+ Latitude |
+ Longitude |
+ Altitude |
+ Commentary |
+ actions |
+
+
+
+ {% for post in posts %}
+
+ {{ post.id }} |
+ {{ post.foundDate ? post.foundDate|date('Y-m-d H:i:s') : '' }} |
+ {{ post.publicationDate ? post.publicationDate|date('Y-m-d H:i:s') : '' }} |
+ {{ post.latitude }} |
+ {{ post.longitude }} |
+ {{ post.altitude }} |
+ {{ post.commentary }} |
+
+ show
+ edit
+ |
+
+ {% else %}
+
+ no records found |
+
+ {% endfor %}
+
+
+
+ Create new
{% endblock %}
diff --git a/templates/post/new.html.twig b/templates/post/new.html.twig
new file mode 100644
index 0000000..b8bc236
--- /dev/null
+++ b/templates/post/new.html.twig
@@ -0,0 +1,11 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}New Post{% endblock %}
+
+{% block body %}
+ Create new Post
+
+ {{ include('post/_form.html.twig') }}
+
+ back to list
+{% endblock %}
diff --git a/templates/post/post.html.twig b/templates/post/post.html.twig
deleted file mode 100644
index 2727393..0000000
--- a/templates/post/post.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }}
- {{ form_widget(form) }}
-{{ form_end(form) }}
diff --git a/templates/post/show.html.twig b/templates/post/show.html.twig
new file mode 100644
index 0000000..a332dba
--- /dev/null
+++ b/templates/post/show.html.twig
@@ -0,0 +1,46 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Post{% endblock %}
+
+{% block body %}
+ Post
+
+
+
+
+ Id |
+ {{ post.id }} |
+
+
+ FoundDate |
+ {{ post.foundDate ? post.foundDate|date('Y-m-d H:i:s') : '' }} |
+
+
+ PublicationDate |
+ {{ post.publicationDate ? post.publicationDate|date('Y-m-d H:i:s') : '' }} |
+
+
+ Latitude |
+ {{ post.latitude }} |
+
+
+ Longitude |
+ {{ post.longitude }} |
+
+
+ Altitude |
+ {{ post.altitude }} |
+
+
+ Commentary |
+ {{ post.commentary }} |
+
+
+
+
+ back to list
+
+ edit
+
+ {{ include('post/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/species/_delete_form.html.twig b/templates/species/_delete_form.html.twig
new file mode 100644
index 0000000..9e7c05a
--- /dev/null
+++ b/templates/species/_delete_form.html.twig
@@ -0,0 +1,4 @@
+
diff --git a/templates/species/_form.html.twig b/templates/species/_form.html.twig
new file mode 100644
index 0000000..bf20b98
--- /dev/null
+++ b/templates/species/_form.html.twig
@@ -0,0 +1,4 @@
+{{ form_start(form) }}
+ {{ form_widget(form) }}
+
+{{ form_end(form) }}
diff --git a/templates/species/edit.html.twig b/templates/species/edit.html.twig
new file mode 100644
index 0000000..8e4401b
--- /dev/null
+++ b/templates/species/edit.html.twig
@@ -0,0 +1,13 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Edit Species{% endblock %}
+
+{% block body %}
+ Edit Species
+
+ {{ include('species/_form.html.twig', {'button_label': 'Update'}) }}
+
+ back to list
+
+ {{ include('species/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/species/index.html.twig b/templates/species/index.html.twig
new file mode 100644
index 0000000..39c0d06
--- /dev/null
+++ b/templates/species/index.html.twig
@@ -0,0 +1,39 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Species index{% endblock %}
+
+{% block body %}
+ Species index
+
+
+
+
+ Id |
+ Scientific_name |
+ Vernacular_name |
+ Region |
+ actions |
+
+
+
+ {% for species in species %}
+
+ {{ species.id }} |
+ {{ species.scientificName }} |
+ {{ species.vernacularName }} |
+ {{ species.region }} |
+
+ show
+ edit
+ |
+
+ {% else %}
+
+ no records found |
+
+ {% endfor %}
+
+
+
+ Create new
+{% endblock %}
diff --git a/templates/species/new.html.twig b/templates/species/new.html.twig
new file mode 100644
index 0000000..8e58597
--- /dev/null
+++ b/templates/species/new.html.twig
@@ -0,0 +1,11 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}New Species{% endblock %}
+
+{% block body %}
+ Create new Species
+
+ {{ include('species/_form.html.twig') }}
+
+ back to list
+{% endblock %}
diff --git a/templates/species/show.html.twig b/templates/species/show.html.twig
new file mode 100644
index 0000000..d0b5a78
--- /dev/null
+++ b/templates/species/show.html.twig
@@ -0,0 +1,34 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Species{% endblock %}
+
+{% block body %}
+ Species
+
+
+
+
+ Id |
+ {{ species.id }} |
+
+
+ Scientific_name |
+ {{ species.scientificName }} |
+
+
+ Vernacular_name |
+ {{ species.vernacularName }} |
+
+
+ Region |
+ {{ species.region }} |
+
+
+
+
+ back to list
+
+ edit
+
+ {{ include('species/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/species/species.html.twig b/templates/species/species.html.twig
deleted file mode 100644
index 2727393..0000000
--- a/templates/species/species.html.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }}
- {{ form_widget(form) }}
-{{ form_end(form) }}
diff --git a/tests/Controller/PostControllerTest.php b/tests/Controller/PostControllerTest.php
new file mode 100644
index 0000000..a94c010
--- /dev/null
+++ b/tests/Controller/PostControllerTest.php
@@ -0,0 +1,142 @@
+client = static::createClient();
+ $this->manager = static::getContainer()->get('doctrine')->getManager();
+ $this->repository = $this->manager->getRepository(Post::class);
+
+ foreach ($this->repository->findAll() as $object) {
+ $this->manager->remove($object);
+ }
+
+ $this->manager->flush();
+ }
+
+ public function testIndex(): void
+ {
+ $crawler = $this->client->request('GET', $this->path);
+
+ self::assertResponseStatusCodeSame(200);
+ self::assertPageTitleContains('Post 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', [
+ 'post[foundDate]' => 'Testing',
+ 'post[latitude]' => 'Testing',
+ 'post[longitude]' => 'Testing',
+ 'post[altitude]' => 'Testing',
+ 'post[commentary]' => 'Testing',
+ 'post[species]' => 'Testing',
+ ]);
+
+ self::assertResponseRedirects($this->path);
+
+ self::assertSame(1, $this->repository->count([]));
+ }
+
+ public function testShow(): void
+ {
+ $this->markTestIncomplete();
+ $fixture = new Post();
+ $fixture->setFoundDate('My Title');
+ $fixture->setLatitude('My Title');
+ $fixture->setLongitude('My Title');
+ $fixture->setAltitude('My Title');
+ $fixture->setCommentary('My Title');
+ $fixture->setSpecies('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('Post');
+
+ // Use assertions to check that the properties are properly displayed.
+ }
+
+ public function testEdit(): void
+ {
+ $this->markTestIncomplete();
+ $fixture = new Post();
+ $fixture->setFoundDate('Value');
+ $fixture->setLatitude('Value');
+ $fixture->setLongitude('Value');
+ $fixture->setAltitude('Value');
+ $fixture->setCommentary('Value');
+ $fixture->setSpecies('Value');
+
+ $this->manager->persist($fixture);
+ $this->manager->flush();
+
+ $this->client->request('GET', sprintf('%s%s/edit', $this->path, $fixture->getId()));
+
+ $this->client->submitForm('Update', [
+ 'post[foundDate]' => 'Something New',
+ 'post[latitude]' => 'Something New',
+ 'post[longitude]' => 'Something New',
+ 'post[altitude]' => 'Something New',
+ 'post[commentary]' => 'Something New',
+ 'post[species]' => 'Something New',
+ ]);
+
+ self::assertResponseRedirects('/post/');
+
+ $fixture = $this->repository->findAll();
+
+ self::assertSame('Something New', $fixture[0]->getFoundDate());
+ self::assertSame('Something New', $fixture[0]->getLatitude());
+ self::assertSame('Something New', $fixture[0]->getLongitude());
+ self::assertSame('Something New', $fixture[0]->getAltitude());
+ self::assertSame('Something New', $fixture[0]->getCommentary());
+ self::assertSame('Something New', $fixture[0]->getSpecies());
+ }
+
+ public function testRemove(): void
+ {
+ $this->markTestIncomplete();
+ $fixture = new Post();
+ $fixture->setFoundDate('Value');
+ $fixture->setLatitude('Value');
+ $fixture->setLongitude('Value');
+ $fixture->setAltitude('Value');
+ $fixture->setCommentary('Value');
+ $fixture->setSpecies('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('/post/');
+ self::assertSame(0, $this->repository->count([]));
+ }
+}
diff --git a/tests/Controller/SpeciesControllerTest.php b/tests/Controller/SpeciesControllerTest.php
new file mode 100644
index 0000000..ef3289e
--- /dev/null
+++ b/tests/Controller/SpeciesControllerTest.php
@@ -0,0 +1,124 @@
+client = static::createClient();
+ $this->manager = static::getContainer()->get('doctrine')->getManager();
+ $this->repository = $this->manager->getRepository(Species::class);
+
+ foreach ($this->repository->findAll() as $object) {
+ $this->manager->remove($object);
+ }
+
+ $this->manager->flush();
+ }
+
+ public function testIndex(): void
+ {
+ $crawler = $this->client->request('GET', $this->path);
+
+ self::assertResponseStatusCodeSame(200);
+ self::assertPageTitleContains('Species 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', [
+ 'species[scientific_name]' => 'Testing',
+ 'species[vernacular_name]' => 'Testing',
+ 'species[region]' => 'Testing',
+ ]);
+
+ self::assertResponseRedirects($this->path);
+
+ self::assertSame(1, $this->repository->count([]));
+ }
+
+ public function testShow(): void
+ {
+ $this->markTestIncomplete();
+ $fixture = new Species();
+ $fixture->setScientific_name('My Title');
+ $fixture->setVernacular_name('My Title');
+ $fixture->setRegion('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('Species');
+
+ // Use assertions to check that the properties are properly displayed.
+ }
+
+ public function testEdit(): void
+ {
+ $this->markTestIncomplete();
+ $fixture = new Species();
+ $fixture->setScientific_name('Value');
+ $fixture->setVernacular_name('Value');
+ $fixture->setRegion('Value');
+
+ $this->manager->persist($fixture);
+ $this->manager->flush();
+
+ $this->client->request('GET', sprintf('%s%s/edit', $this->path, $fixture->getId()));
+
+ $this->client->submitForm('Update', [
+ 'species[scientific_name]' => 'Something New',
+ 'species[vernacular_name]' => 'Something New',
+ 'species[region]' => 'Something New',
+ ]);
+
+ self::assertResponseRedirects('/species/');
+
+ $fixture = $this->repository->findAll();
+
+ self::assertSame('Something New', $fixture[0]->getScientific_name());
+ self::assertSame('Something New', $fixture[0]->getVernacular_name());
+ self::assertSame('Something New', $fixture[0]->getRegion());
+ }
+
+ public function testRemove(): void
+ {
+ $this->markTestIncomplete();
+ $fixture = new Species();
+ $fixture->setScientific_name('Value');
+ $fixture->setVernacular_name('Value');
+ $fixture->setRegion('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('/species/');
+ self::assertSame(0, $this->repository->count([]));
+ }
+}