diff --git a/src/DataFixtures/GroupFixtures.php b/src/DataFixtures/GroupFixtures.php
index 129f6bad594691f87496dce50214689cf6ba4866..a6f02c4d850d3658aadb14dab3259ecfb24b1c17 100644
--- a/src/DataFixtures/GroupFixtures.php
+++ b/src/DataFixtures/GroupFixtures.php
@@ -7,33 +7,43 @@ use App\Entity\User;
 use Doctrine\Bundle\FixturesBundle\Fixture;
 use Doctrine\Common\DataFixtures\DependentFixtureInterface;
 use Doctrine\Persistence\ObjectManager;
-use Symfony\Contracts\Translation\TranslatorInterface;
 
 class GroupFixtures extends Fixture implements DependentFixtureInterface
 {
-    private TranslatorInterface $translator;
-
-    public function __construct(TranslatorInterface $translator)
-    {
-        $this->translator = $translator;
-    }
-
     public function load(ObjectManager $manager): void
     {
         $user_repository = $manager->getRepository(User::class);
-        $group_author = $user_repository->findOneBy(['email' => "defaultUser@localhost.com"]);
-        if (! $group_author instanceof User) {
+        $group_author_1 = $user_repository->findOneBy(['email' => "defaultUser@localhost.com"]);
+        if (! $group_author_1 instanceof User) {
+            throw new \Exception("User does not exist.");
+        }
+
+        $group_author_2 = $user_repository->findOneBy(['email' => "defaultUser2@localhost.com"]);
+        if (! $group_author_2 instanceof User) {
             throw new \Exception("User does not exist.");
         }
 
-        //TODO: refacto with real group
-        $group_all = new Group();
-        $group_all->setName($this->translator->trans('groups.filter.no_filter'));
-        $group_all->setAuthor($group_author);
-        $manager->persist($group_all);
+        $group_pop_1 = $this->createGroup($group_author_1, "Pop", $manager);
+        $group_rock = $this->createGroup($group_author_1, "Rock", $manager);
+
+        $group_pop_2 = $this->createGroup($group_author_2, "Pop", $manager);
+
+        $author_1_capsules = $group_author_1->getCapsules();
+        $author_1_capsules->toArray()[0]->addGroup($group_pop_1);
+
         $manager->flush();
     }
 
+    private function createGroup(User $author, string $group_name, ObjectManager $manager): Group
+    {
+        $group = new Group();
+        $group->setName($group_name);
+        $group->setAuthor($author);
+        $manager->persist($group);
+
+        return $group;
+    }
+
     public function getDependencies(): array
     {
         return [
diff --git a/tests/functional/CapsuleEditorControllerTest.php b/tests/functional/CapsuleEditorControllerTest.php
index 2be2f65302c2b9a781fe24ccd080fe31dbc97f08..b843c959b01bad2f5dfb185151ae14d236f3eab4 100644
--- a/tests/functional/CapsuleEditorControllerTest.php
+++ b/tests/functional/CapsuleEditorControllerTest.php
@@ -30,7 +30,6 @@ class CapsuleEditorControllerTest extends WebTestCase
             ->get('doctrine')
             ->getManager();
 
-
         $this->user_repository = $this->object_manager->getRepository(User::class);
         $this->capsule_repository = $this->object_manager->getRepository(Capsule::class);
 
diff --git a/tests/functional/CapsuleGroupControllerTest.php b/tests/functional/CapsuleGroupControllerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..601fca565e6e59d62c91addbfa2b454f80804c64
--- /dev/null
+++ b/tests/functional/CapsuleGroupControllerTest.php
@@ -0,0 +1,143 @@
+<?php
+
+namespace App\Tests\functional;
+
+use App\Entity\Capsule;
+use App\Entity\Group;
+use App\Entity\User;
+use App\Repository\CapsuleRepository;
+use App\Repository\GroupRepository;
+use App\Repository\UserRepository;
+use Doctrine\Persistence\ObjectManager;
+use Symfony\Bundle\FrameworkBundle\KernelBrowser;
+use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
+
+class CapsuleGroupControllerTest extends WebTestCase
+{
+    private KernelBrowser $client;
+    private ObjectManager $object_manager;
+    private UserRepository $user_repository; /** @phpstan-ignore-line */
+    private CapsuleRepository $capsule_repository; /** @phpstan-ignore-line */
+    private GroupRepository $group_repository;
+    private User $user_1;
+    private User $user_2;
+    private Group $group_pop_own_by_user_1;
+    private Group $group_rock_own_by_user_1;
+    private Capsule $capsule;
+
+    protected function setUp(): void
+    {
+        self::ensureKernelShutdown();
+
+        $this->client = static::createClient();
+
+        $this->object_manager = $this->client->getContainer()
+            ->get('doctrine')
+            ->getManager();
+
+        $this->user_repository = $this->object_manager->getRepository(User::class);
+        $this->capsule_repository = $this->object_manager->getRepository(Capsule::class);
+        $this->group_repository = $this->object_manager->getRepository(Group::class);
+
+        $this->setUsers();
+        $this->setCapsule();
+        $this->setCapsuleGroupPop();
+        $this->setCapsuleGroupRock();
+    }
+
+    protected function tearDown(): void
+    {
+        parent::tearDown();
+        self::ensureKernelShutdown();
+    }
+
+    public function testUserShouldNotBeAbleToCreateACapsuleGroupWithExistingGroupName(): void
+    {
+        $this->client->loginUser($this->user_1);
+        $uri = '/capsule/' . $this->capsule->getId() . '/groups/create';
+        $crawler = $this->client->request('GET', $uri);
+        $this->assertResponseIsSuccessful();
+
+        $this->client->enableProfiler();
+        $submit_button = $crawler->selectButton('Create a new group');
+        $form = $submit_button->form();
+        $this->assertContains($this->group_pop_own_by_user_1, $this->user_1->getGroups()->toArray());
+
+        $form['create_capsule_groups_form[name]'] = $this->group_pop_own_by_user_1->getName();
+        $this->client->submit($form);
+
+        $this->assertFalse($this->client->getResponse()->isRedirect());
+    }
+
+    public function testUserShouldBeAbleToCreateACapsuleGroupWithTheSameGroupNameUsedByAnotherUser(): void
+    {
+        $this->client->loginUser($this->user_2);
+        $uri = '/capsule/' . $this->capsule->getId() . '/groups/create';
+        $crawler = $this->client->request('GET', $uri);
+        $this->assertResponseIsSuccessful();
+
+        $this->client->enableProfiler();
+        $submit_button = $crawler->selectButton('Create a new group');
+        $form = $submit_button->form();
+        $this->assertContains($this->group_pop_own_by_user_1, $this->user_1->getGroups()->toArray());
+
+        $form['create_capsule_groups_form[name]'] = $this->group_rock_own_by_user_1->getName();
+        $this->client->submit($form);
+
+        $this->assertTrue($this->client->getResponse()->isRedirect());
+    }
+
+    private function setUsers(): void
+    {
+        $verified_user_1 = $this->user_repository
+            ->findOneBy(['email' => 'defaultUser@localhost.com']);
+
+        if (! $verified_user_1 instanceof User) {
+            throw new \Exception("User does not exist.");
+        }
+
+        $this->user_1 = $verified_user_1;
+
+        $user_2 = $this->user_repository
+            ->findOneBy(['email' => 'defaultUser2@localhost.com']);
+
+        if (! $user_2 instanceof User) {
+            throw new \Exception("User does not exist.");
+        }
+
+        $this->user_2 = $user_2;
+    }
+
+    private function setCapsule(): void
+    {
+        $capsule = $this->capsule_repository->findOneBy(['name' => 'Pomme']);
+
+        if (! $capsule instanceof Capsule) {
+            throw new \Exception("Capsule does not exist.");
+        }
+
+        $this->capsule = $capsule;
+    }
+
+    private function setCapsuleGroupPop(): void
+    {
+        $group_pop = $this->group_repository->findOneBy(['name' => 'Pop', 'author' => $this->user_1]);
+
+        if (! $group_pop instanceof Group) {
+            throw new \Exception("Group does not exist.");
+        }
+
+        $this->group_pop_own_by_user_1 = $group_pop;
+    }
+
+    private function setCapsuleGroupRock(): void
+    {
+        $group_rock = $this->group_repository->findOneBy(['name' => 'Rock', 'author' => $this->user_1]);
+
+        if (! $group_rock instanceof Group) {
+            throw new \Exception("Group does not exist.");
+        }
+
+        $this->group_rock_own_by_user_1 = $group_rock;
+    }
+}