Update test suites for Codeception 5.x.

This commit is contained in:
Buster "Silver Eagle" Neece 2022-03-16 19:04:40 -05:00
parent f1be6c5381
commit c17e1e88f5
No known key found for this signature in database
GPG Key ID: 9FC8B9E008872109
48 changed files with 193 additions and 113 deletions

View File

@ -1,7 +1,7 @@
actor: Tester actor: Tester
paths: paths:
tests: tests tests: tests
log: tests/_output output: tests/_output
data: tests/_data data: tests/_data
support: tests/_support support: tests/_support
envs: tests/_envs envs: tests/_envs
@ -11,9 +11,6 @@ settings:
colors: true colors: true
memory_limit: 1024M memory_limit: 1024M
error_level: "E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED" error_level: "E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED"
extensions:
enabled:
- Codeception\Extension\RunFailed
modules: modules:
coverage : coverage :
enabled : true enabled : true
@ -37,4 +34,4 @@ coverage :
# Exceptions # Exceptions
- src/Exception/*.php - src/Exception/*.php
- src/Mvc/ErrorHandler.php - src/Http/ErrorHandler.php

View File

@ -1,10 +1,5 @@
parameters: parameters:
ignoreErrors: ignoreErrors:
-
message: "#^Parameter \\#2 \\$record of method App\\\\Controller\\\\Api\\\\AbstractApiCrudController\\<TEntity of App\\\\Entity\\\\StationPlaylist\\|App\\\\Entity\\\\StationStreamer\\>\\:\\:fromArray\\(\\) expects \\(TEntity of App\\\\Entity\\\\StationPlaylist\\|App\\\\Entity\\\\StationStreamer\\)\\|null, \\(TEntity of App\\\\Entity\\\\StationPlaylist\\|App\\\\Entity\\\\StationStreamer\\)\\|null given\\.$#"
count: 1
path: src/Controller/Api/Stations/AbstractScheduledEntityController.php
- -
message: "#^Parameter \\#3 \\$criteria of method Doctrine\\\\DBAL\\\\Connection\\:\\:update\\(\\) expects array\\<string, mixed\\>, array\\<int, int\\> given\\.$#" message: "#^Parameter \\#3 \\$criteria of method Doctrine\\\\DBAL\\\\Connection\\:\\:update\\(\\) expects array\\<string, mixed\\>, array\\<int, int\\> given\\.$#"
count: 1 count: 1

View File

@ -29,7 +29,7 @@ class Module extends Framework implements DoctrineProvider
public ReloadableEntityManagerInterface $em; public ReloadableEntityManagerInterface $em;
public function __construct(ModuleContainer $moduleContainer, $config = null) public function __construct(ModuleContainer $moduleContainer, ?array $config = null)
{ {
parent::__construct($moduleContainer, $config); parent::__construct($moduleContainer, $config);

View File

@ -51,7 +51,8 @@ class Strings
$max = mb_strlen($keyspace, '8bit') - 1; $max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) { for ($i = 0; $i < $length; ++$i) {
$str .= $keyspace[random_int(0, $max)]; /** @noinspection RandomApiMigrationInspection */
$str .= $keyspace[rand(0, $max)];
} }
return $str; return $str;
} }

View File

@ -0,0 +1,11 @@
actor: FunctionalTester
suite_namespace: \Functional
modules:
enabled:
- \App\Tests\Module:
container: \App\AppFactory
- Doctrine2:
depends: \App\Tests\Module
- REST:
depends: \App\Tests\Module
- Cli

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,12 +1,17 @@
<?php <?php
namespace Functional;
use App\Entity\Repository\RolePermissionRepository;
use App\Enums\GlobalPermissions;
class Api_Admin_RolesCest extends CestAbstract class Api_Admin_RolesCest extends CestAbstract
{ {
/** /**
* @before setupComplete * @before setupComplete
* @before login * @before login
*/ */
public function manageRoles(FunctionalTester $I): void public function manageRoles(\FunctionalTester $I): void
{ {
$I->wantTo('Manage roles via API.'); $I->wantTo('Manage roles via API.');
@ -17,7 +22,7 @@ class Api_Admin_RolesCest extends CestAbstract
'name' => 'Generic Admin', 'name' => 'Generic Admin',
'permissions' => [ 'permissions' => [
'global' => [ 'global' => [
App\Enums\GlobalPermissions::All->value, GlobalPermissions::All->value,
], ],
], ],
], ],
@ -27,11 +32,11 @@ 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.'); $I->wantTo('Ensure super administrator is not editable.');
$permissionRepo = $this->di->get(App\Entity\Repository\RolePermissionRepository::class); $permissionRepo = $this->di->get(RolePermissionRepository::class);
$superAdminRole = $permissionRepo->ensureSuperAdministratorRole(); $superAdminRole = $permissionRepo->ensureSuperAdministratorRole();
$I->sendPut( $I->sendPut(

View File

@ -1,12 +1,16 @@
<?php <?php
namespace Functional;
use App\Radio\Enums\FrontendAdapters;
class Api_Admin_StationsCest extends CestAbstract class Api_Admin_StationsCest extends CestAbstract
{ {
/** /**
* @before setupComplete * @before setupComplete
* @before login * @before login
*/ */
public function manageStations(FunctionalTester $I): void public function manageStations(\FunctionalTester $I): void
{ {
$I->wantTo('Manage stations via API.'); $I->wantTo('Manage stations via API.');
@ -14,12 +18,12 @@ class Api_Admin_StationsCest extends CestAbstract
$I, $I,
'/api/admin/stations', '/api/admin/stations',
[ [
'name' => 'Test Station', 'name' => 'Test Station',
'short_name' => 'test_station', 'short_name' => 'test_station',
], ],
[ [
'name' => 'Modified Station', 'name' => 'Modified Station',
'frontend_type' => \App\Radio\Enums\FrontendAdapters::Shoutcast->value, 'frontend_type' => FrontendAdapters::Shoutcast->value,
] ]
); );
} }

View File

@ -1,12 +1,17 @@
<?php <?php
namespace Functional;
use App\Entity\Enums\StorageLocationAdapters;
use App\Entity\Enums\StorageLocationTypes;
class Api_Admin_StorageLocationsCest extends CestAbstract class Api_Admin_StorageLocationsCest extends CestAbstract
{ {
/** /**
* @before setupComplete * @before setupComplete
* @before login * @before login
*/ */
public function manageStorageLocations(FunctionalTester $I): void public function manageStorageLocations(\FunctionalTester $I): void
{ {
$I->wantTo('Manage storage locations via API.'); $I->wantTo('Manage storage locations via API.');
@ -14,9 +19,9 @@ class Api_Admin_StorageLocationsCest extends CestAbstract
$I, $I,
'/api/admin/storage_locations', '/api/admin/storage_locations',
[ [
'type' => App\Entity\Enums\StorageLocationTypes::StationMedia->value, 'type' => StorageLocationTypes::StationMedia->value,
'adapter' => App\Entity\Enums\StorageLocationAdapters::Local->value, 'adapter' => StorageLocationAdapters::Local->value,
'path' => '/tmp/test_storage_location', 'path' => '/tmp/test_storage_location',
], ],
[ [
'path' => '/tmp/test_storage_location_2', 'path' => '/tmp/test_storage_location_2',

View File

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

View File

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

View File

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

View File

@ -1,19 +1,22 @@
<?php <?php
namespace Functional;
class Api_IndexCest extends CestAbstract class Api_IndexCest extends CestAbstract
{ {
/** /**
* @before setupComplete * @before setupComplete
*/ */
public function checkApiIndex(FunctionalTester $I): void public function checkApiIndex(\FunctionalTester $I): void
{ {
$I->wantTo('Check basic API functions.'); $I->wantTo('Check basic API functions.');
$I->sendGET('/api/status'); $I->sendGET('/api/status');
$I->seeResponseContainsJson( $I->seeResponseContainsJson(
[ [
'online' => true, 'online' => true,
]); ]
);
$I->sendGET('/api/time'); $I->sendGET('/api/time');
$I->seeResponseCodeIs(200); $I->seeResponseCodeIs(200);

View File

@ -1,5 +1,7 @@
<?php <?php
namespace Functional;
use App\Entity; use App\Entity;
class Api_RequestsCest extends CestAbstract class Api_RequestsCest extends CestAbstract
@ -7,7 +9,7 @@ class Api_RequestsCest extends CestAbstract
/** /**
* @before setupComplete * @before setupComplete
*/ */
public function checkRequestsAPI(FunctionalTester $I): void public function checkRequestsAPI(\FunctionalTester $I): void
{ {
$I->wantTo('Check request API endpoints.'); $I->wantTo('Check request API endpoints.');

View File

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

View File

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

View File

@ -1,12 +1,17 @@
<?php <?php
namespace Functional;
use App\Entity\Enums\PlaylistSources;
use App\Entity\Enums\PlaylistTypes;
class Api_Stations_PlaylistsCest extends CestAbstract class Api_Stations_PlaylistsCest extends CestAbstract
{ {
/** /**
* @before setupComplete * @before setupComplete
* @before login * @before login
*/ */
public function managePlaylists(FunctionalTester $I): void public function managePlaylists(\FunctionalTester $I): void
{ {
$I->wantTo('Manage station playlists via API.'); $I->wantTo('Manage station playlists via API.');
@ -16,14 +21,14 @@ class Api_Stations_PlaylistsCest extends CestAbstract
$I, $I,
'/api/station/' . $station->getId() . '/playlists', '/api/station/' . $station->getId() . '/playlists',
[ [
'name' => 'General Rotation Playlist', 'name' => 'General Rotation Playlist',
'source' => App\Entity\Enums\PlaylistSources::Songs->value, 'source' => PlaylistSources::Songs->value,
'type' => App\Entity\Enums\PlaylistTypes::Standard->value, 'type' => PlaylistTypes::Standard->value,
'weight' => 5, 'weight' => 5,
], ],
[ [
'name' => 'Modified Playlist', 'name' => 'Modified Playlist',
'type' => App\Entity\Enums\PlaylistTypes::Advanced->value, 'type' => PlaylistTypes::Advanced->value,
] ]
); );
} }

View File

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

View File

@ -1,12 +1,16 @@
<?php <?php
namespace Functional;
use App\Radio\Enums\RemoteAdapters;
class Api_Stations_RemotesCest extends CestAbstract class Api_Stations_RemotesCest extends CestAbstract
{ {
/** /**
* @before setupComplete * @before setupComplete
* @before login * @before login
*/ */
public function manageRemotes(FunctionalTester $I): void public function manageRemotes(\FunctionalTester $I): void
{ {
$I->wantTo('Manage station remote relays via API.'); $I->wantTo('Manage station remote relays via API.');
@ -16,7 +20,7 @@ class Api_Stations_RemotesCest extends CestAbstract
$I, $I,
'/api/station/' . $station->getId() . '/remotes', '/api/station/' . $station->getId() . '/remotes',
[ [
'type' => \App\Radio\Enums\RemoteAdapters::Icecast->value, 'type' => RemoteAdapters::Icecast->value,
'display_name' => 'Test Remote Relay', 'display_name' => 'Test Remote Relay',
], ],
[ [

View File

@ -1,12 +1,14 @@
<?php <?php
namespace Functional;
class Api_Stations_ReportsCest extends CestAbstract class Api_Stations_ReportsCest extends CestAbstract
{ {
/** /**
* @before setupComplete * @before setupComplete
* @before login * @before login
*/ */
public function viewReports(FunctionalTester $I): void public function viewReports(\FunctionalTester $I): void
{ {
$I->wantTo('View various station reports via API.'); $I->wantTo('View various station reports via API.');

View File

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

View File

@ -1,12 +1,14 @@
<?php <?php
namespace Functional;
class Api_Stations_WebhooksCest extends CestAbstract class Api_Stations_WebhooksCest extends CestAbstract
{ {
/** /**
* @before setupComplete * @before setupComplete
* @before login * @before login
*/ */
public function manageWebhooks(FunctionalTester $I): void public function manageWebhooks(\FunctionalTester $I): void
{ {
$I->wantTo('Manage station webhooks via API.'); $I->wantTo('Manage station webhooks via API.');

View File

@ -1,15 +1,21 @@
<?php <?php
namespace Functional;
use App\Acl;
use App\Doctrine\ReloadableEntityManagerInterface; use App\Doctrine\ReloadableEntityManagerInterface;
use App\Entity; use App\Entity;
use App\Enums\GlobalPermissions;
use App\Environment;
use App\Security\SplitToken; use App\Security\SplitToken;
use App\Tests\Module;
use Psr\Container\ContainerInterface; use Psr\Container\ContainerInterface;
abstract class CestAbstract abstract class CestAbstract
{ {
protected ContainerInterface $di; protected ContainerInterface $di;
protected App\Environment $environment; protected Environment $environment;
protected Entity\Repository\SettingsRepository $settingsRepo; protected Entity\Repository\SettingsRepository $settingsRepo;
@ -24,17 +30,17 @@ abstract class CestAbstract
private ?Entity\Station $test_station = null; private ?Entity\Station $test_station = null;
protected function _inject(App\Tests\Module $tests_module): void protected function _inject(Module $tests_module): void
{ {
$this->di = $tests_module->container; $this->di = $tests_module->container;
$this->em = $tests_module->em; $this->em = $tests_module->em;
$this->settingsRepo = $this->di->get(Entity\Repository\SettingsRepository::class); $this->settingsRepo = $this->di->get(Entity\Repository\SettingsRepository::class);
$this->stationRepo = $this->di->get(Entity\Repository\StationRepository::class); $this->stationRepo = $this->di->get(Entity\Repository\StationRepository::class);
$this->environment = $this->di->get(App\Environment::class); $this->environment = $this->di->get(Environment::class);
} }
public function _after(FunctionalTester $I): void public function _after(\FunctionalTester $I): void
{ {
$this->em->clear(); $this->em->clear();
@ -45,7 +51,7 @@ abstract class CestAbstract
} }
} }
protected function setupIncomplete(FunctionalTester $I): void protected function setupIncomplete(\FunctionalTester $I): void
{ {
$I->wantTo('Start with an incomplete setup.'); $I->wantTo('Start with an incomplete setup.');
@ -57,7 +63,7 @@ abstract class CestAbstract
$this->settingsRepo->writeSettings($settings); $this->settingsRepo->writeSettings($settings);
} }
protected function setupComplete(FunctionalTester $I): void protected function setupComplete(\FunctionalTester $I): void
{ {
$this->_cleanTables(); $this->_cleanTables();
@ -68,7 +74,7 @@ abstract class CestAbstract
$this->setupCompleteSettings($I); $this->setupCompleteSettings($I);
} }
protected function setupCompleteUser(FunctionalTester $I): void protected function setupCompleteUser(\FunctionalTester $I): void
{ {
// Create administrator account. // Create administrator account.
$role = new Entity\Role; $role = new Entity\Role;
@ -76,7 +82,7 @@ abstract class CestAbstract
$this->em->persist($role); $this->em->persist($role);
$rha = new Entity\RolePermission($role); $rha = new Entity\RolePermission($role);
$rha->setActionName(App\Enums\GlobalPermissions::All); $rha->setActionName(GlobalPermissions::All);
$this->em->persist($rha); $this->em->persist($rha);
// Create user account. // Create user account.
@ -101,10 +107,10 @@ abstract class CestAbstract
$this->login_api_key = (string)$key; $this->login_api_key = (string)$key;
$I->amBearerAuthenticated($this->login_api_key); $I->amBearerAuthenticated($this->login_api_key);
$this->di->get(App\Acl::class)->reload(); $this->di->get(Acl::class)->reload();
} }
protected function setupCompleteStations(FunctionalTester $I): void protected function setupCompleteStations(\FunctionalTester $I): void
{ {
$I->sendPost( $I->sendPost(
'/api/admin/stations', '/api/admin/stations',
@ -118,7 +124,7 @@ abstract class CestAbstract
$this->test_station = $this->em->find(Entity\Station::class, $stationId[0]); $this->test_station = $this->em->find(Entity\Station::class, $stationId[0]);
} }
protected function setupCompleteSettings(FunctionalTester $I): void protected function setupCompleteSettings(\FunctionalTester $I): void
{ {
$I->sendPut( $I->sendPut(
'/api/admin/settings/' . Entity\Settings::GROUP_GENERAL, '/api/admin/settings/' . Entity\Settings::GROUP_GENERAL,
@ -139,7 +145,7 @@ abstract class CestAbstract
$this->test_station = null; $this->test_station = null;
} }
throw new RuntimeException('Test station is not established.'); throw new \RuntimeException('Test station is not established.');
} }
protected function uploadTestSong(): Entity\StationMedia protected function uploadTestSong(): Entity\StationMedia
@ -175,7 +181,7 @@ abstract class CestAbstract
$this->em->clear(); $this->em->clear();
} }
protected function login(FunctionalTester $I): void protected function login(\FunctionalTester $I): void
{ {
$this->setupComplete($I); $this->setupComplete($I);
@ -194,7 +200,7 @@ abstract class CestAbstract
} }
protected function testCrudApi( protected function testCrudApi(
FunctionalTester $I, \FunctionalTester $I,
string $listUrl, string $listUrl,
array $createJson = [], array $createJson = [],
array $editJson = [] array $editJson = []

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

8
tests/Unit.suite.yml Normal file
View File

@ -0,0 +1,8 @@
actor: UnitTester
suite_namespace: \Unit
modules:
enabled:
- \App\Tests\Module:
container: \App\AppFactory
error_level: "E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED"

View File

@ -1,10 +1,12 @@
<?php <?php
namespace Unit;
use App\Utilities; use App\Utilities;
class ExportsTest extends \Codeception\Test\Unit class ExportsTest extends \Codeception\Test\Unit
{ {
protected UnitTester $tester; protected \UnitTester $tester;
public function testExports() public function testExports()
{ {

View File

@ -1,5 +1,7 @@
<?php <?php
namespace Unit;
use App\Entity; use App\Entity;
use Carbon\CarbonImmutable; use Carbon\CarbonImmutable;

View File

@ -1,23 +1,25 @@
<?php <?php
namespace Unit;
use App\Entity; use App\Entity;
class StationPlaylistTest extends \Codeception\Test\Unit class StationPlaylistTest extends \Codeception\Test\Unit
{ {
protected UnitTester $tester; protected \UnitTester $tester;
protected App\Radio\AutoDJ\Scheduler $scheduler; protected \App\Radio\AutoDJ\Scheduler $scheduler;
protected function _inject(App\Tests\Module $tests_module): void protected function _inject(\App\Tests\Module $tests_module): void
{ {
$di = $tests_module->container; $di = $tests_module->container;
$this->scheduler = $di->get(App\Radio\AutoDJ\Scheduler::class); $this->scheduler = $di->get(\App\Radio\AutoDJ\Scheduler::class);
} }
public function testScheduledPlaylist(): void public function testScheduledPlaylist(): void
{ {
/** @var Entity\Station $station */ /** @var Entity\Station $station */
$station = Mockery::mock(Entity\Station::class); $station = \Mockery::mock(Entity\Station::class);
$playlist = new Entity\StationPlaylist($station); $playlist = new Entity\StationPlaylist($station);
$playlist->setName('Test Playlist'); $playlist->setName('Test Playlist');
@ -58,7 +60,7 @@ class StationPlaylistTest extends \Codeception\Test\Unit
public function testOncePerXMinutesPlaylist() public function testOncePerXMinutesPlaylist()
{ {
/** @var Entity\Station $station */ /** @var Entity\Station $station */
$station = Mockery::mock(Entity\Station::class); $station = \Mockery::mock(Entity\Station::class);
$playlist = new Entity\StationPlaylist($station); $playlist = new Entity\StationPlaylist($station);
$playlist->setName('Test Playlist'); $playlist->setName('Test Playlist');
@ -84,7 +86,7 @@ class StationPlaylistTest extends \Codeception\Test\Unit
public function testOncePerHourPlaylist() public function testOncePerHourPlaylist()
{ {
/** @var Entity\Station $station */ /** @var Entity\Station $station */
$station = Mockery::mock(Entity\Station::class); $station = \Mockery::mock(Entity\Station::class);
$playlist = new Entity\StationPlaylist($station); $playlist = new Entity\StationPlaylist($station);
$playlist->setName('Test Playlist'); $playlist->setName('Test Playlist');

View File

@ -1,10 +1,12 @@
<?php <?php
namespace Unit;
use App\Utilities\Strings; use App\Utilities\Strings;
class UtilitiesTest extends \Codeception\Test\Unit class UtilitiesTest extends \Codeception\Test\Unit
{ {
protected UnitTester $tester; protected \UnitTester $tester;
public function testUtilities(): void public function testUtilities(): void
{ {

View File

@ -1,11 +1,13 @@
<?php <?php
namespace Unit;
use App\Xml\Reader; use App\Xml\Reader;
use App\Xml\Writer; use App\Xml\Writer;
class XmlTest extends \Codeception\Test\Unit class XmlTest extends \Codeception\Test\Unit
{ {
protected UnitTester $tester; protected \UnitTester $tester;
public function testXml(): void public function testXml(): void
{ {

View File

@ -2,7 +2,7 @@
// This is global bootstrap for autoloading // This is global bootstrap for autoloading
$autoloader = require __DIR__.'/../vendor/autoload.php'; $autoloader = require __DIR__.'/../vendor/autoload.php';
$autoloader->addClassMap([ $autoloader->addClassMap([
'CestAbstract' => __DIR__.'/functional/CestAbstract.php', 'Functional\CestAbstract' => __DIR__ . '/Functional/CestAbstract.php',
]); ]);
\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader([$autoloader, 'loadClass']); \Doctrine\Common\Annotations\AnnotationRegistry::registerLoader([$autoloader, 'loadClass']);

View File

@ -1,16 +0,0 @@
# Codeception Test Suite Configuration
#
# Suite for functional (integration) tests
# Emulate web requests and make application process them
# Include one of framework modules (Symfony2, Yii2, Laravel5) to use it
class_name: FunctionalTester
modules:
enabled:
- \App\Tests\Module:
container: \App\AppFactory
- Doctrine2:
depends: \App\Tests\Module
- REST:
depends: \App\Tests\Module
- Cli

View File

@ -1,8 +0,0 @@
class_name: UnitTester
modules:
enabled:
- \App\Tests\Module:
container: \App\AppFactory
- \Helper\Unit
error_level: "E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED"