Skip to content
Snippets Groups Projects
Commit 9d0b4f4d authored by Camille Simiand's avatar Camille Simiand
Browse files

Functional tests

parent e3c8eb91
Branches
Tags
1 merge request!59tuleap-170-capsule-groups-should-be-own-by-user
......@@ -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 [
......
......@@ -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);
......
<?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;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment