Skip to content

Commit

Permalink
Add mod list tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jskowronski39 committed Dec 27, 2023
1 parent aa5aea0 commit 1ed867d
Show file tree
Hide file tree
Showing 3 changed files with 148 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/Validator/ModList/UniqueModListNameValidator.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(ModList::class, ['name' => $name], $id)) {
if ($this->isColumnValueUnique(ModList::class, ['name' => $name], $id)) {
return;
}

Expand Down
53 changes: 53 additions & 0 deletions tests/functional/Web/ModList/DeleteModListCest.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\ModList;

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

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

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

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

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

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

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

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

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

$I->dontSeeInRepository(ModList::class, ['name' => $name]);
}
}
90 changes: 90 additions & 0 deletions tests/functional/Web/ModList/ListModListsCest.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\ModList;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 comments on commit 1ed867d

Please sign in to comment.