Skip to content

Commit

Permalink
Add mod list public tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jskowronski39 committed Jan 13, 2024
1 parent 75146d4 commit 502e749
Show file tree
Hide file tree
Showing 5 changed files with 157 additions and 13 deletions.
4 changes: 3 additions & 1 deletion src/Controller/ModListPublic/DownloadAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;

use function Symfony\Component\Clock\now;

class DownloadAction extends AbstractController
{
public function __construct(
Expand All @@ -24,7 +26,7 @@ public function __construct(
#[IsGranted(PermissionsEnum::MOD_LIST_DOWNLOAD->value, 'modList')]
public function __invoke(ModList $modList, string $optionalModsJson = null): Response
{
$name = sprintf('ArmaForces %s %s', $modList->getName(), (new \DateTimeImmutable())->format('Y_m_d H_i'));
$name = sprintf('ArmaForces %s %s', $modList->getName(), now()->format('Y_m_d H_i'));
$mods = $this->modRepository->findIncludedSteamWorkshopMods($modList);
$optionalMods = json_decode($optionalModsJson ?? '', true) ?: [];

Expand Down
12 changes: 0 additions & 12 deletions tests/_support/Helper/Functional.php

This file was deleted.

9 changes: 9 additions & 0 deletions tests/functional/Web/ModListPublic/CustomizeModListCest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

declare(strict_types=1);

namespace App\Tests\Functional\Web\ModListPublic;

class CustomizeModListCest
{
}
111 changes: 111 additions & 0 deletions tests/functional/Web/ModListPublic/DownloadModListCest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?php

declare(strict_types=1);

namespace App\Tests\Functional\Web\ModListPublic;

use App\DataFixtures\Dlc\CslaIronCurtainDlcFixture;
use App\DataFixtures\Dlc\GlobalMobilizationDlcFixture;
use App\DataFixtures\Dlc\SogPrairieFireDlcFixture;
use App\DataFixtures\Dlc\Spearhead1944DlcFixture;
use App\DataFixtures\Mod\SteamWorkshop\Optional\AceInteractionMenuExpansionModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\ArmaForcesMedicalModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\Broken\ArmaForcesAceMedicalModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\CupTerrainsCoreModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\CupTerrainsMapsModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\CupUnitsModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\CupVehiclesModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\CupWeaponsModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\Deprecated\LegacyArmaForcesModsModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\RhsAfrfModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\RhsGrefModFixture;
use App\DataFixtures\Mod\SteamWorkshop\Required\RhsUsafModFixture;
use App\DataFixtures\ModList\DefaultModListFixture;
use App\DataFixtures\ModList\RhsModListFixture;
use App\DataFixtures\User\User1Fixture;
use App\Entity\Dlc\Dlc;
use App\Entity\Mod\SteamWorkshopMod;
use App\Tests\FunctionalTester;
use Codeception\Util\HttpCode;

class DownloadModListCest
{
public function _before(FunctionalTester $I): void
{
$I->freezeTime('2020-01-01T00:00:00+00:00');
}

public function downloadModListAsUnauthenticatedUser(FunctionalTester $I): void
{
$optionalMods = [
AceInteractionMenuExpansionModFixture::ID,
'invalid',
];

$I->amOnPage(sprintf('/mod-list/%s/download/%s', DefaultModListFixture::NAME, json_encode($optionalMods)));

$I->seeResponseContainsModListPresetWithMods('ArmaForces Default 2020_01_01 00_00.html', [
$I->grabEntityFromRepository(Dlc::class, ['id' => CslaIronCurtainDlcFixture::ID]),
$I->grabEntityFromRepository(Dlc::class, ['id' => GlobalMobilizationDlcFixture::ID]),
$I->grabEntityFromRepository(Dlc::class, ['id' => SogPrairieFireDlcFixture::ID]),
$I->grabEntityFromRepository(Dlc::class, ['id' => Spearhead1944DlcFixture::ID]),
], [
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => ArmaForcesAceMedicalModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => ArmaForcesMedicalModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupTerrainsCoreModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupTerrainsMapsModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupUnitsModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupVehiclesModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupWeaponsModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => RhsAfrfModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => RhsGrefModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => RhsUsafModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => LegacyArmaForcesModsModFixture::ID]),
]);
}

public function downloadModListAsAuthenticatedUser(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(User1Fixture::ID);

$optionalMods = [
AceInteractionMenuExpansionModFixture::ID,
'invalid',
];

$I->amOnPage(sprintf('/mod-list/%s/download/%s', DefaultModListFixture::NAME, json_encode($optionalMods)));

$I->seeResponseContainsModListPresetWithMods('ArmaForces Default 2020_01_01 00_00.html', [
$I->grabEntityFromRepository(Dlc::class, ['id' => CslaIronCurtainDlcFixture::ID]),
$I->grabEntityFromRepository(Dlc::class, ['id' => GlobalMobilizationDlcFixture::ID]),
$I->grabEntityFromRepository(Dlc::class, ['id' => SogPrairieFireDlcFixture::ID]),
$I->grabEntityFromRepository(Dlc::class, ['id' => Spearhead1944DlcFixture::ID]),
], [
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => ArmaForcesAceMedicalModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => ArmaForcesMedicalModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupTerrainsCoreModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupTerrainsMapsModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupUnitsModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupVehiclesModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => CupWeaponsModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => RhsAfrfModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => RhsGrefModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => RhsUsafModFixture::ID]),
$I->grabEntityFromRepository(SteamWorkshopMod::class, ['id' => LegacyArmaForcesModsModFixture::ID]),
]);
}

public function downloadModListAsAuthenticatedUserWhenModListNotDisabled(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(User1Fixture::ID);

$optionalMods = [
AceInteractionMenuExpansionModFixture::ID,
'invalid',
];

$I->amOnPage(sprintf('/mod-list/%s/download/%s', RhsModListFixture::NAME, json_encode($optionalMods)));

$I->seeResponseCodeIs(HttpCode::FORBIDDEN);
}
}
34 changes: 34 additions & 0 deletions tests/functional/Web/ModListPublic/SelectModListCest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

declare(strict_types=1);

namespace App\Tests\Functional\Web\ModListPublic;

use App\DataFixtures\ModList\CupModListFixture;
use App\DataFixtures\ModList\DefaultModListFixture;
use App\DataFixtures\ModList\RhsModListFixture;
use App\DataFixtures\User\User1Fixture;
use App\Tests\FunctionalTester;

class SelectModListCest
{
public function selectModListAsUnauthenticatedUser(FunctionalTester $I): void
{
$I->amOnPage('/mod-list/select');

$I->see(DefaultModListFixture::NAME);
$I->see(CupModListFixture::NAME);
$I->dontSee(RhsModListFixture::NAME); // disabled
}

public function selectModListAsAuthenticatedUser(FunctionalTester $I): void
{
$I->amDiscordAuthenticatedAs(User1Fixture::ID);

$I->amOnPage('/mod-list/select');

$I->see(DefaultModListFixture::NAME);
$I->see(CupModListFixture::NAME);
$I->dontSee(RhsModListFixture::NAME); // disabled
}
}

0 comments on commit 502e749

Please sign in to comment.