Apply scanning to more files.

This commit is contained in:
Buster Neece 2023-06-08 09:22:50 -05:00
parent 0c06451b7f
commit 723e9402ac
No known key found for this signature in database
42 changed files with 257 additions and 94 deletions

View File

@ -2,13 +2,11 @@
<ruleset name="AzuraCast">
<description>The AzuraCast PHP coding standard.</description>
<file>bin</file>
<file>config</file>
<file>src</file>
<file>templates</file>
<file>web</file>
<exclude-pattern>src/Tests/*$</exclude-pattern>
<file>tests/Functional</file>
<file>tests/Unit</file>
<arg name="basepath" value="."/>
<arg name="extensions" value="php"/>
@ -35,6 +33,15 @@
<exclude-pattern>src/Installer/EnvFiles/*.php</exclude-pattern>
</rule>
<rule ref="Squiz.Classes.ValidClassName.NotCamelCaps">
<exclude-pattern>tests/*$</exclude-pattern>
</rule>
<rule ref="PSR2.Methods.MethodDeclaration.Underscore">
<exclude-pattern>src/Tests/Module.php</exclude-pattern>
<exclude-pattern>tests/*$</exclude-pattern>
</rule>
<rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification">
<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification"/>
</rule>

View File

@ -14,6 +14,10 @@ parameters:
- templates
- web
fileExtensions:
- ""
- php
excludePaths:
- config/routes.dev.php

View File

@ -53,7 +53,7 @@ class Connector extends AbstractBrowser
$_SERVER['REQUEST_METHOD'] = strtoupper($request->getMethod());
$_SERVER['REQUEST_URI'] = $uri;
$request = (new ServerRequestFactory)->createServerRequestFromGlobals();
$request = (new ServerRequestFactory())->createServerRequestFromGlobals();
$slimResponse = $this->app->handle($request);

View File

@ -1,11 +1,12 @@
<?php
declare(strict_types=1);
/**
* Based on Herloct's Slim 3.0 Connector
* https://github.com/herloct/codeception-slim-module
*/
declare(strict_types=1);
namespace App\Tests;
use App\AppFactory;
@ -22,6 +23,7 @@ use Psr\Container\ContainerInterface;
use RuntimeException;
use Slim\App;
// phpcs:disable PSR2.Methods.MethodDeclaration.Underscore
class Module extends Framework implements DoctrineProvider
{
public ContainerInterface $container;
@ -37,6 +39,7 @@ class Module extends Framework implements DoctrineProvider
$this->requiredFields = ['container'];
}
public function _initialize(): void
{
$this->app = AppFactory::createApp(

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Admin_DebugCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function syncTasks(\FunctionalTester $I)
public function syncTasks(FunctionalTester $I)
{
$I->wantTo('Test All Synchronized Tasks');
$I->amOnPage('/admin/debug/sync/all');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Admin_IndexCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function seeAdminHomepage(\FunctionalTester $I): void
public function seeAdminHomepage(FunctionalTester $I): void
{
$I->wantTo('See the administration homepage.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Admin_RecordsCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function manageUsers(\FunctionalTester $I): void
public function manageUsers(FunctionalTester $I): void
{
$I->wantTo('Manage users.');
@ -52,7 +56,7 @@ class Admin_RecordsCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function manageStations(\FunctionalTester $I): void
public function manageStations(FunctionalTester $I): void
{
$I->wantTo('Manage stations.');
@ -79,7 +83,7 @@ class Admin_RecordsCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function manageSettings(\FunctionalTester $I): void
public function manageSettings(FunctionalTester $I): void
{
$I->wantTo('Manage settings.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_Admin_AuditLogCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function viewAuditLog(\FunctionalTester $I): void
public function viewAuditLog(FunctionalTester $I): void
{
$I->wantTo('View audit log via API.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_Admin_CustomFieldsCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function manageCustomFields(\FunctionalTester $I): void
public function manageCustomFields(FunctionalTester $I): void
{
$I->wantTo('Manage custom fields via API.');

View File

@ -1,9 +1,12 @@
<?php
declare(strict_types=1);
namespace Functional;
use App\Entity\Repository\RolePermissionRepository;
use App\Enums\GlobalPermissions;
use FunctionalTester;
class Api_Admin_RolesCest extends CestAbstract
{
@ -11,7 +14,7 @@ class Api_Admin_RolesCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function manageRoles(\FunctionalTester $I): void
public function manageRoles(FunctionalTester $I): void
{
$I->wantTo('Manage roles via API.');
@ -32,7 +35,7 @@ class Api_Admin_RolesCest extends CestAbstract
);
}
public function checkSuperAdminRole(\FunctionalTester $I): void
public function checkSuperAdminRole(FunctionalTester $I): void
{
$I->wantTo('Ensure super administrator is not editable.');

View File

@ -1,8 +1,11 @@
<?php
declare(strict_types=1);
namespace Functional;
use App\Radio\Enums\FrontendAdapters;
use FunctionalTester;
class Api_Admin_StationsCest extends CestAbstract
{
@ -10,7 +13,7 @@ class Api_Admin_StationsCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function manageStations(\FunctionalTester $I): void
public function manageStations(FunctionalTester $I): void
{
$I->wantTo('Manage stations via API.');

View File

@ -1,9 +1,12 @@
<?php
declare(strict_types=1);
namespace Functional;
use App\Entity\Enums\StorageLocationAdapters;
use App\Entity\Enums\StorageLocationTypes;
use FunctionalTester;
class Api_Admin_StorageLocationsCest extends CestAbstract
{
@ -11,7 +14,7 @@ class Api_Admin_StorageLocationsCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function manageStorageLocations(\FunctionalTester $I): void
public function manageStorageLocations(FunctionalTester $I): void
{
$I->wantTo('Manage storage locations via API.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_Admin_UsersCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function manageUsers(\FunctionalTester $I): void
public function manageUsers(FunctionalTester $I): void
{
$I->wantTo('Manage users via API.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_Frontend_AccountCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function checkAccount(\FunctionalTester $I): void
public function checkAccount(FunctionalTester $I): void
{
$I->wantTo('Check frontend account API functions.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_Frontend_DashboardCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function checkDashboard(\FunctionalTester $I): void
public function checkDashboard(FunctionalTester $I): void
{
$I->wantTo('Check dashboard API functions.');

View File

@ -1,13 +1,17 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_IndexCest extends CestAbstract
{
/**
* @before setupComplete
*/
public function checkApiIndex(\FunctionalTester $I): void
public function checkApiIndex(FunctionalTester $I): void
{
$I->wantTo('Check basic API functions.');

View File

@ -1,13 +1,17 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_StationsCest extends CestAbstract
{
/**
* @before setupComplete
*/
public function checkApiStation(\FunctionalTester $I): void
public function checkApiStation(FunctionalTester $I): void
{
$I->wantTo('Check station API endpoints.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_Stations_MountsCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function manageMounts(\FunctionalTester $I): void
public function manageMounts(FunctionalTester $I): void
{
$I->wantTo('Manage station mount points via API.');

View File

@ -1,9 +1,12 @@
<?php
declare(strict_types=1);
namespace Functional;
use App\Entity\Enums\PlaylistSources;
use App\Entity\Enums\PlaylistTypes;
use FunctionalTester;
class Api_Stations_PlaylistsCest extends CestAbstract
{
@ -11,7 +14,7 @@ class Api_Stations_PlaylistsCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function managePlaylists(\FunctionalTester $I): void
public function managePlaylists(FunctionalTester $I): void
{
$I->wantTo('Manage station playlists via API.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_Stations_PodcastsCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function managePodcasts(\FunctionalTester $I): void
public function managePodcasts(FunctionalTester $I): void
{
$I->wantTo('Manage station podcasts via API.');

View File

@ -1,8 +1,11 @@
<?php
declare(strict_types=1);
namespace Functional;
use App\Radio\Enums\RemoteAdapters;
use FunctionalTester;
class Api_Stations_RemotesCest extends CestAbstract
{
@ -10,7 +13,7 @@ class Api_Stations_RemotesCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function manageRemotes(\FunctionalTester $I): void
public function manageRemotes(FunctionalTester $I): void
{
$I->wantTo('Manage station remote relays via API.');

View File

@ -1,8 +1,13 @@
<?php
declare(strict_types=1);
namespace Functional;
use Codeception\Util\Shared\Asserts;
use DateInterval;
use DateTime;
use FunctionalTester;
use League\Csv\Reader;
class Api_Stations_ReportsCest extends CestAbstract
@ -13,7 +18,7 @@ class Api_Stations_ReportsCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function viewReports(\FunctionalTester $I): void
public function viewReports(FunctionalTester $I): void
{
$I->wantTo('View various station reports via API.');
@ -40,23 +45,23 @@ class Api_Stations_ReportsCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function downloadListenerReportsCsv(\FunctionalTester $I): void
public function downloadListenerReportsCsv(FunctionalTester $I): void
{
$I->wantTo('Download station listener report CSV via API.');
$station = $this->getTestStation();
$uriBase = '/api/station/' . $station->getId();
$startDateTime = (new \DateTime())->sub(\DateInterval::createFromDateString('30 days'));
$endDateTime = new \DateTime();
$startDateTime = (new DateTime())->sub(DateInterval::createFromDateString('30 days'));
$endDateTime = new DateTime();
$requestUrl = $uriBase . '/listeners?' . http_build_query(
[
[
'format' => 'csv',
'start' => $startDateTime->format('Y-m-d\TH:i:s.v\Z'),
'end' => $endDateTime->format('Y-m-d\TH:i:s.v\Z'),
]
);
);
$csvHeaders = [
'IP',
@ -87,23 +92,23 @@ class Api_Stations_ReportsCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function downloadHistoryReportCsv(\FunctionalTester $I): void
public function downloadHistoryReportCsv(FunctionalTester $I): void
{
$I->wantTo('Download station timeline report CSV via API.');
$station = $this->getTestStation();
$uriBase = '/api/station/' . $station->getId();
$startDateTime = (new \DateTime())->sub(\DateInterval::createFromDateString('30 days'));
$endDateTime = new \DateTime();
$startDateTime = (new DateTime())->sub(DateInterval::createFromDateString('30 days'));
$endDateTime = new DateTime();
$requestUrl = $uriBase . '/history?' . http_build_query(
[
[
'format' => 'csv',
'start' => $startDateTime->format('Y-m-d\TH:i:s.v\Z'),
'end' => $endDateTime->format('Y-m-d\TH:i:s.v\Z'),
]
);
);
$csvHeaders = [
'Date',
@ -120,7 +125,7 @@ class Api_Stations_ReportsCest extends CestAbstract
}
protected function testReportCsv(
\FunctionalTester $I,
FunctionalTester $I,
string $url,
array $headerFields
): void {

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Api_Stations_StreamersCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function manageStreamers(\FunctionalTester $I): void
public function manageStreamers(FunctionalTester $I): void
{
$I->wantTo('Manage station streamers via API.');

View File

@ -1,8 +1,11 @@
<?php
declare(strict_types=1);
namespace Functional;
use App\Webhook\Enums\WebhookTypes;
use FunctionalTester;
class Api_Stations_WebhooksCest extends CestAbstract
{
@ -10,7 +13,7 @@ class Api_Stations_WebhooksCest extends CestAbstract
* @before setupComplete
* @before login
*/
public function manageWebhooks(\FunctionalTester $I): void
public function manageWebhooks(FunctionalTester $I): void
{
$I->wantTo('Manage station webhooks via API.');

View File

@ -1,17 +1,29 @@
<?php
declare(strict_types=1);
namespace Functional;
use App\Acl;
use App\Doctrine\ReloadableEntityManagerInterface;
use App\Entity\ApiKey;
use App\Entity\Repository\SettingsRepository;
use App\Entity\Repository\StationRepository;
use App\Entity\Repository\StorageLocationRepository;
use App\Entity\Role;
use App\Entity\RolePermission;
use App\Entity\Settings;
use App\Entity\Station;
use App\Entity\StationMedia;
use App\Entity\User;
use App\Enums\GlobalPermissions;
use App\Environment;
use App\Media\MediaProcessor;
use App\Security\SplitToken;
use App\Tests\Module;
use FunctionalTester;
use Psr\Container\ContainerInterface;
use RuntimeException;
abstract class CestAbstract
{
@ -30,7 +42,7 @@ abstract class CestAbstract
protected ?string $login_api_key = null;
private ?\App\Entity\Station $test_station = null;
private ?Station $test_station = null;
protected function _inject(Module $testsModule): void
{
@ -42,7 +54,7 @@ abstract class CestAbstract
$this->environment = $this->di->get(Environment::class);
}
public function _after(\FunctionalTester $I): void
public function _after(FunctionalTester $I): void
{
$this->em->clear();
@ -53,7 +65,7 @@ abstract class CestAbstract
}
}
protected function setupIncomplete(\FunctionalTester $I): void
protected function setupIncomplete(FunctionalTester $I): void
{
$I->wantTo('Start with an incomplete setup.');
@ -65,7 +77,7 @@ abstract class CestAbstract
$this->settingsRepo->writeSettings($settings);
}
protected function setupComplete(\FunctionalTester $I): void
protected function setupComplete(FunctionalTester $I): void
{
$this->_cleanTables();
@ -76,19 +88,19 @@ abstract class CestAbstract
$this->setupCompleteSettings($I);
}
protected function setupCompleteUser(\FunctionalTester $I): void
protected function setupCompleteUser(FunctionalTester $I): void
{
// Create administrator account.
$role = new \App\Entity\Role;
$role = new Role();
$role->setName('Super Administrator');
$this->em->persist($role);
$rha = new \App\Entity\RolePermission($role);
$rha = new RolePermission($role);
$rha->setActionName(GlobalPermissions::All);
$this->em->persist($rha);
// Create user account.
$user = new \App\Entity\User;
$user = new User();
$user->setName('AzuraCast Test User');
$user->setEmail($this->login_username);
$user->setNewPassword($this->login_password);
@ -100,7 +112,7 @@ abstract class CestAbstract
// Create API key
$key = SplitToken::generate();
$apiKey = new \App\Entity\ApiKey($user, $key);
$apiKey = new ApiKey($user, $key);
$apiKey->setComment('Test Suite');
$this->em->persist($apiKey);
@ -112,7 +124,7 @@ abstract class CestAbstract
$this->di->get(Acl::class)->reload();
}
protected function setupCompleteStations(\FunctionalTester $I): void
protected function setupCompleteStations(FunctionalTester $I): void
{
$I->sendPost(
'/api/admin/stations',
@ -123,34 +135,34 @@ abstract class CestAbstract
);
$stationId = $I->grabDataFromResponseByJsonPath('id');
$this->test_station = $this->em->find(\App\Entity\Station::class, $stationId[0]);
$this->test_station = $this->em->find(Station::class, $stationId[0]);
}
protected function setupCompleteSettings(\FunctionalTester $I): void
protected function setupCompleteSettings(FunctionalTester $I): void
{
$I->sendPut(
'/api/admin/settings/' . \App\Entity\Settings::GROUP_GENERAL,
'/api/admin/settings/' . Settings::GROUP_GENERAL,
[
'base_url' => 'http://localhost',
]
);
}
protected function getTestStation(): \App\Entity\Station
protected function getTestStation(): Station
{
if ($this->test_station instanceof \App\Entity\Station) {
if ($this->test_station instanceof Station) {
$testStation = $this->em->refetch($this->test_station);
if ($testStation instanceof \App\Entity\Station) {
if ($testStation instanceof Station) {
return $testStation;
}
$this->test_station = null;
}
throw new \RuntimeException('Test station is not established.');
throw new RuntimeException('Test station is not established.');
}
protected function uploadTestSong(): \App\Entity\StationMedia
protected function uploadTestSong(): StationMedia
{
$testStation = $this->getTestStation();
@ -158,9 +170,9 @@ abstract class CestAbstract
$storageLocation = $testStation->getMediaStorageLocation();
$storageLocationRepo = $this->di->get(\App\Entity\Repository\StorageLocationRepository::class);
$storageLocationRepo = $this->di->get(StorageLocationRepository::class);
$storageFs = $storageLocationRepo->getAdapter($storageLocation)->getFilesystem();
$storageFs->upload($songSrc, 'test.mp3');
/** @var MediaProcessor $mediaProcessor */
@ -172,10 +184,10 @@ abstract class CestAbstract
protected function _cleanTables(): void
{
$cleanTables = [
\App\Entity\User::class,
\App\Entity\Role::class,
\App\Entity\Station::class,
\App\Entity\Settings::class,
User::class,
Role::class,
Station::class,
Settings::class,
];
foreach ($cleanTables as $cleanTable) {
@ -185,7 +197,7 @@ abstract class CestAbstract
$this->em->clear();
}
protected function login(\FunctionalTester $I): void
protected function login(FunctionalTester $I): void
{
$this->setupComplete($I);
@ -204,7 +216,7 @@ abstract class CestAbstract
}
protected function testCrudApi(
\FunctionalTester $I,
FunctionalTester $I,
string $listUrl,
array $createJson = [],
array $editJson = []

View File

@ -1,10 +1,14 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Frontend_ErrorCest extends CestAbstract
{
public function seeErrorPages(\FunctionalTester $I): void
public function seeErrorPages(FunctionalTester $I): void
{
$I->wantTo('Verify error code pages.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Frontend_IndexCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function seeHomepage(\FunctionalTester $I): void
public function seeHomepage(FunctionalTester $I): void
{
$I->wantTo('See the proper data on the homepage.');

View File

@ -1,13 +1,17 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Frontend_PublicCest extends CestAbstract
{
/**
* @before setupComplete
*/
public function seePublicPage(\FunctionalTester $I): void
public function seePublicPage(FunctionalTester $I): void
{
$I->wantTo('Verify that the public page displays.');

View File

@ -1,7 +1,11 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Frontend_SetupCest extends CestAbstract
{
/**
@ -10,7 +14,7 @@ class Frontend_SetupCest extends CestAbstract
* @after setupStation
* @after setupSettings
*/
public function setupStart(\FunctionalTester $I): void
public function setupStart(FunctionalTester $I): void
{
$I->wantTo('Complete the initial setup process.');
@ -22,7 +26,7 @@ class Frontend_SetupCest extends CestAbstract
$I->comment('Setup redirect found.');
}
protected function setupRegister(\FunctionalTester $I): void
protected function setupRegister(FunctionalTester $I): void
{
$I->amOnPage('/setup');
@ -42,7 +46,7 @@ class Frontend_SetupCest extends CestAbstract
);
}
protected function setupStation(\FunctionalTester $I): void
protected function setupStation(FunctionalTester $I): void
{
$I->amOnPage('/setup');
$I->seeCurrentUrlEquals('/setup/station');
@ -51,7 +55,7 @@ class Frontend_SetupCest extends CestAbstract
$this->setupCompleteStations($I);
}
protected function setupSettings(\FunctionalTester $I): void
protected function setupSettings(FunctionalTester $I): void
{
$I->amOnPage('/setup');
$I->seeCurrentUrlEquals('/setup/settings');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Station_MediaCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function editMedia(\FunctionalTester $I): void
public function editMedia(FunctionalTester $I): void
{
$I->wantTo('Upload a song to a station.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Station_MountPointsCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function editMountPoints(\FunctionalTester $I): void
public function editMountPoints(FunctionalTester $I): void
{
$testStation = $this->getTestStation();
$stationId = $testStation->getId();

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Station_PlaylistsCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function editPlaylists(\FunctionalTester $I): void
public function editPlaylists(FunctionalTester $I): void
{
$I->wantTo('Create a station playlist.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Station_ProfileCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function editStationProfile(\FunctionalTester $I): void
public function editStationProfile(FunctionalTester $I): void
{
$I->wantTo('View and edit a station profile.');

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Station_RemoteRelaysCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function editRemoteRelays(\FunctionalTester $I): void
public function editRemoteRelays(FunctionalTester $I): void
{
$testStation = $this->getTestStation();
$stationId = $testStation->getId();

View File

@ -1,14 +1,18 @@
<?php
declare(strict_types=1);
namespace Functional;
use FunctionalTester;
class Station_ReportsCest extends CestAbstract
{
/**
* @before setupComplete
* @before login
*/
public function viewReports(\FunctionalTester $I): void
public function viewReports(FunctionalTester $I): void
{
$I->wantTo('View station reports.');

View File

@ -1,2 +1,5 @@
<?php
/* Placeholder */
declare(strict_types=1);
/* Placeholder */

View File

@ -1,15 +1,18 @@
<?php
declare(strict_types=1);
namespace Unit;
use App\Entity\Api\StationPlaylistQueue;
use App\Radio\AutoDJ\DuplicatePrevention;
use App\Tests\Module;
use Codeception\Test\Unit;
use UnitTester;
class DuplicatePreventionTest extends Unit
{
protected \UnitTester $tester;
protected UnitTester $tester;
protected DuplicatePrevention $duplicatePrevention;

View File

@ -1,7 +1,10 @@
<?php
declare(strict_types=1);
namespace Unit;
use App\Entity\Listener;
use Carbon\CarbonImmutable;
use Codeception\Test\Unit;
use DateTimeZone;
@ -32,6 +35,6 @@ class ListenerIntervalTest extends Unit
];
$expected = 6 * 60 * 60;
self::assertEquals($expected, \App\Entity\Listener::getListenerSeconds($intervals));
self::assertEquals($expected, Listener::getListenerSeconds($intervals));
}
}

View File

@ -1,7 +1,13 @@
<?php
declare(strict_types=1);
namespace Unit;
use App\Entity\Enums\PlaylistTypes;
use App\Entity\Station;
use App\Entity\StationPlaylist;
use App\Entity\StationSchedule;
use App\Radio\AutoDJ\Scheduler;
use App\Tests\Module;
use Carbon\CarbonImmutable;
@ -24,14 +30,14 @@ class StationPlaylistTest extends Unit
public function testScheduledPlaylist(): void
{
/** @var \App\Entity\Station $station */
$station = Mockery::mock(\App\Entity\Station::class);
/** @var Station $station */
$station = Mockery::mock(Station::class);
$playlist = new \App\Entity\StationPlaylist($station);
$playlist = new StationPlaylist($station);
$playlist->setName('Test Playlist');
// Sample playlist that plays from 10PM to 4AM the next day.
$scheduleEntry = new \App\Entity\StationSchedule($playlist);
$scheduleEntry = new StationSchedule($playlist);
$scheduleEntry->setStartTime(2200);
$scheduleEntry->setEndTime(400);
$scheduleEntry->setDays([1, 2, 3]); // Monday, Tuesday, Wednesday
@ -65,12 +71,12 @@ class StationPlaylistTest extends Unit
public function testOncePerXMinutesPlaylist()
{
/** @var \App\Entity\Station $station */
$station = Mockery::mock(\App\Entity\Station::class);
/** @var Station $station */
$station = Mockery::mock(Station::class);
$playlist = new \App\Entity\StationPlaylist($station);
$playlist = new StationPlaylist($station);
$playlist->setName('Test Playlist');
$playlist->setType(\App\Entity\Enums\PlaylistTypes::OncePerXMinutes);
$playlist->setType(PlaylistTypes::OncePerXMinutes);
$playlist->setPlayPerMinutes(30);
$utc = new DateTimeZone('UTC');
@ -91,12 +97,12 @@ class StationPlaylistTest extends Unit
public function testOncePerHourPlaylist()
{
/** @var \App\Entity\Station $station */
$station = Mockery::mock(\App\Entity\Station::class);
/** @var Station $station */
$station = Mockery::mock(Station::class);
$playlist = new \App\Entity\StationPlaylist($station);
$playlist = new StationPlaylist($station);
$playlist->setName('Test Playlist');
$playlist->setType(\App\Entity\Enums\PlaylistTypes::OncePerHour);
$playlist->setType(PlaylistTypes::OncePerHour);
$playlist->setPlayPerHourMinute(50);
$utc = new DateTimeZone('UTC');

View File

@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace Unit;
use App\Utilities\Strings;

View File

@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace Unit;
use App\Xml\Reader;

View File

@ -1,2 +1,5 @@
<?php
declare(strict_types=1);
// Here you can initialize variables that will be available to your tests