Skip to content

Commit

Permalink
Add mod group tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jskowronski39 committed Nov 11, 2023
1 parent cdeb22d commit 42b8660
Show file tree
Hide file tree
Showing 3 changed files with 148 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/Validator/ModGroup/UniqueModGroupNameValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,12 @@ public function validate(mixed $value, Constraint $constraint): void
}

$name = $value->getName();
if ('' === $name || null === $name) {
return;
}

$id = $value->getId();
if (!$name || $this->isColumnValueUnique(ModGroup::class, ['name' => $name], $id)) {
if ($this->isColumnValueUnique(ModGroup::class, ['name' => $name], $id)) {
return;
}

Expand Down
53 changes: 53 additions & 0 deletions tests/functional/Web/ModGroup/DeleteModGroupCest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?php

declare(strict_types=1);

namespace App\Tests\Functional\Web\ModGroup;

use App\DataFixtures\ModGroup\CupModGroupFixture;
use App\DataFixtures\User\RegularUserFixture;
use App\Entity\ModGroup\ModGroup;
use App\Entity\User\User;
use App\Tests\FunctionalTester;
use Symfony\Component\HttpFoundation\Response;

class DeleteModGroupCest
{
public function _before(FunctionalTester $I): void
{
$I->stopFollowingRedirects();
}

public function deleteModGroupAsUnauthenticatedUser(FunctionalTester $I): void
{
$name = CupModGroupFixture::NAME;
$I->amOnPage(sprintf('/mod-group/%s/delete', $name));
$I->seeResponseRedirectsToDiscordAuth();

$I->seeInRepository(ModGroup::class, ['name' => CupModGroupFixture::NAME]);
}

public function deleteModGroupAsUnauthorizedUser(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(RegularUserFixture::ID);

$name = CupModGroupFixture::NAME;
$I->amOnPage(sprintf('/mod-group/%s/delete', $name));
$I->seeResponseCodeIs(Response::HTTP_FORBIDDEN);

$I->seeInRepository(ModGroup::class, ['name' => $name]);
}

public function deleteModGroupAsAuthorizedUser(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(RegularUserFixture::ID, function (User $user): void {
$user->getPermissions()->modGroupDelete = true;
});

$name = CupModGroupFixture::NAME;
$I->amOnPage(sprintf('/mod-group/%s/delete', $name));
$I->seeResponseRedirectsTo('/mod-group/list');

$I->dontSeeInRepository(ModGroup::class, ['name' => $name]);
}
}
90 changes: 90 additions & 0 deletions tests/functional/Web/ModGroup/ListModGroupsCest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?php

declare(strict_types=1);

namespace App\Tests\Functional\Web\ModGroup;

use App\DataFixtures\User\RegularUserFixture;
use App\Entity\User\User;
use App\Tests\FunctionalTester;
use Symfony\Component\HttpFoundation\Response;

class ListModGroupsCest
{
public function _before(FunctionalTester $I): void
{
$I->stopFollowingRedirects();
}

public function listModGroupsAsUnauthenticatedUser(FunctionalTester $I): void
{
$I->amOnPage('/mod-group/list');
$I->seeResponseRedirectsToDiscordAuth();
}

public function listModGroupsAsUnauthorizedUser(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(RegularUserFixture::ID);

$I->amOnPage('/mod-group/list');
$I->seeResponseCodeIs(Response::HTTP_FORBIDDEN);
}

public function listModGroupsAsAuthorizedUser(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(RegularUserFixture::ID, function (User $user): void {
$user->getPermissions()->modGroupList = true;
});

$I->amOnPage('/mod-group/list');
$I->seeResponseCodeIs(Response::HTTP_OK);

$I->dontSeeActionButton('Create mod group');
$I->dontSeeActionButton('Edit mod group');
}

public function listModGroupsAsAuthorizedUserWithCreateModPermission(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(RegularUserFixture::ID, function (User $user): void {
$user->getPermissions()->modGroupList = true;
$user->getPermissions()->modGroupCreate = true;
});

$I->amOnPage('/mod-group/list');
$I->seeResponseCodeIs(Response::HTTP_OK);

$I->seeLink('Create mod group');
$I->dontSeeActionButton('Edit mod group');
$I->dontSeeActionButton('Delete mod group');
}

public function listModGroupsAsAuthorizedUserWithUpdateModPermission(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(RegularUserFixture::ID, function (User $user): void {
$user->getPermissions()->modGroupList = true;
$user->getPermissions()->modGroupUpdate = true;
});

$I->amOnPage('/mod-group/list');
$I->seeResponseCodeIs(Response::HTTP_OK);

$I->dontSeeLink('Create mod group');
$I->seeActionButton('Edit mod group');
$I->dontSeeActionButton('Delete mod group');
}

public function listModGroupsAsAuthorizedUserWithDeleteModPermission(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(RegularUserFixture::ID, function (User $user): void {
$user->getPermissions()->modGroupList = true;
$user->getPermissions()->modGroupDelete = true;
});

$I->amOnPage('/mod-group/list');
$I->seeResponseCodeIs(Response::HTTP_OK);

$I->dontSeeLink('Create mod group');
$I->dontSeeActionButton('Edit mod group');
$I->seeActionButton('Delete mod group');
}
}

0 comments on commit 42b8660

Please sign in to comment.