diff options
Diffstat (limited to 'tests')
15 files changed, 611 insertions, 355 deletions
diff --git a/tests/TestCase.php b/tests/TestCase.php index 5f90eb81bd..b110d08882 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -17,13 +17,14 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; +use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Localization\Locale\LocaleEnUs; use Fisharebest\Localization\Locale\LocaleInterface; use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\Controllers\GedcomFileController; +use Fisharebest\Webtrees\Http\Request; use Fisharebest\Webtrees\Module\ModuleThemeInterface; use Fisharebest\Webtrees\Module\WebtreesTheme; -use Fisharebest\Webtrees\Schema\SeedDatabase; use Fisharebest\Webtrees\Services\MigrationService; use Fisharebest\Webtrees\Services\TimeoutService; use Fisharebest\Webtrees\Services\UserService; @@ -32,13 +33,28 @@ use Illuminate\Cache\Repository; use Illuminate\Database\Capsule\Manager as DB; use League\Flysystem\Filesystem; use League\Flysystem\Memory\MemoryAdapter; -use Symfony\Component\HttpFoundation\Request; +use Nyholm\Psr7\Factory\Psr17Factory; +use Psr\Http\Message\ResponseFactoryInterface; +use Psr\Http\Message\ServerRequestFactoryInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Message\StreamFactoryInterface; +use Psr\Http\Message\UploadedFileFactoryInterface; +use Psr\Http\Message\UploadedFileInterface; +use Psr\Http\Message\UriFactoryInterface; +use function app; use function basename; +use function define; +use function defined; +use function dirname; +use function filesize; +use function http_build_query; +use function rawurlencode; +use const UPLOAD_ERR_OK; /** * Base class for unit tests */ -class TestCase extends \PHPUnit\Framework\TestCase +class TestCase extends \PHPUnit\Framework\TestCase implements StatusCodeInterface { protected static $uses_database = false; @@ -49,6 +65,34 @@ class TestCase extends \PHPUnit\Framework\TestCase { parent::setUpBeforeClass(); + // Use nyholm as our PSR7 factory + app()->bind(ResponseFactoryInterface::class, Psr17Factory::class); + app()->bind(ServerRequestFactoryInterface::class, Psr17Factory::class); + app()->bind(StreamFactoryInterface::class, Psr17Factory::class); + app()->bind(UploadedFileFactoryInterface::class, Psr17Factory::class); + app()->bind(UriFactoryInterface::class, Psr17Factory::class); + + // Use an array cache for database calls, etc. + app()->instance('cache.array', new Repository(new ArrayStore())); + + app()->bind(Tree::class, static function () { + return null; + }); + + app()->instance(UserService::class, new UserService()); + app()->instance(UserInterface::class, new GuestUser()); + + app()->instance(ServerRequestInterface::class, Request::create('http://localhost/index.php')); + app()->instance(Filesystem::class, new Filesystem(new MemoryAdapter())); + + app()->bind(ModuleThemeInterface::class, WebtreesTheme::class); + app()->bind(LocaleInterface::class, LocaleEnUs::class); + + defined('WT_ROOT') || define('WT_ROOT', dirname(__DIR__) . '/'); + defined('WT_BASE_URL') || define('WT_BASE_URL', 'http://localhost/'); + defined('WT_DATA_DIR') || define('WT_DATA_DIR', WT_ROOT . 'data/'); + defined('WT_LOCALE') || define('WT_LOCALE', I18N::init('en-US', null, true)); + if (static::$uses_database) { defined('WT_ROOT') || define('WT_ROOT', dirname(__DIR__) . '/'); @@ -57,6 +101,30 @@ class TestCase extends \PHPUnit\Framework\TestCase } /** + * Create an SQLite in-memory database for testing + */ + protected static function createTestDatabase(): void + { + $capsule = new DB(); + $capsule->addConnection([ + 'driver' => 'sqlite', + 'database' => ':memory:', + ]); + $capsule->setAsGlobal(); + Database::registerMacros(); + + // Migrations create logs, which requires an IP address, which requires a request + self::createRequest(); + + // Create tables + $migration_service = new MigrationService; + $migration_service->updateSchema('\Fisharebest\Webtrees\Schema', 'WT_SCHEMA_VERSION', Webtrees::SCHEMA_VERSION); + + // Create config data + $migration_service->seedDatabase(); + } + + /** * Things to run once, AFTER all the tests. */ public static function tearDownAfterClass() @@ -76,27 +144,6 @@ class TestCase extends \PHPUnit\Framework\TestCase { parent::setUp(); - // Use an array cache for database calls, etc. - app()->instance('cache.array', new Repository(new ArrayStore())); - - app()->bind(Tree::class, static function () { - return null; - }); - - app()->instance(UserService::class, new UserService()); - app()->instance(UserInterface::class, new GuestUser()); - - app()->instance(Request::class, Request::createFromGlobals()); - app()->instance(Filesystem::class, new Filesystem(new MemoryAdapter())); - - app()->bind(ModuleThemeInterface::class, WebtreesTheme::class); - app()->bind(LocaleInterface::class, LocaleEnUs::class); - - defined('WT_ROOT') || define('WT_ROOT', dirname(__DIR__) . '/'); - defined('WT_BASE_URL') || define('WT_BASE_URL', 'http://localhost/'); - defined('WT_DATA_DIR') || define('WT_DATA_DIR', WT_ROOT . 'data/'); - defined('WT_LOCALE') || define('WT_LOCALE', I18N::init('en-US', null, true)); - if (static::$uses_database) { DB::connection()->beginTransaction(); } @@ -122,27 +169,6 @@ class TestCase extends \PHPUnit\Framework\TestCase } /** - * Create an SQLite in-memory database for testing - */ - protected static function createTestDatabase(): void - { - $capsule = new DB(); - $capsule->addConnection([ - 'driver' => 'sqlite', - 'database' => ':memory:', - ]); - $capsule->setAsGlobal(); - Database::registerMacros(); - - // Create tables - $migration_service = new MigrationService; - $migration_service->updateSchema('\Fisharebest\Webtrees\Schema', 'WT_SCHEMA_VERSION', Webtrees::SCHEMA_VERSION); - - // Create config data - $migration_service->seedDatabase(); - } - - /** * Import a GEDCOM file into the test database. * * @param string $gedcom_file @@ -152,7 +178,9 @@ class TestCase extends \PHPUnit\Framework\TestCase protected function importTree(string $gedcom_file): Tree { $tree = Tree::create(basename($gedcom_file), basename($gedcom_file)); - $tree->importGedcomFile(__DIR__ . '/data/' . $gedcom_file, $gedcom_file); + + $stream = app(StreamFactoryInterface::class)->createStreamFromFile(__DIR__ . '/data/' . $gedcom_file); + $tree->importGedcomFile($stream, $gedcom_file); View::share('tree', $tree); $gedcom_file_controller = new GedcomFileController(); @@ -165,4 +193,60 @@ class TestCase extends \PHPUnit\Framework\TestCase return $tree; } + + /** + * Create a request and bind it into the container. + * + * @param string $method + * @param string[] $query + * @param string[] $params + * @param UploadedFileInterface[] $files + * + * @return ServerRequestInterface + */ + protected static function createRequest(string $method = 'GET', array $query = [], array $params = [], array $files = []): ServerRequestInterface + { + /** @var ServerRequestFactoryInterface */ + $server_request_factory = app(ServerRequestFactoryInterface::class); + + $uri = 'http://localhost/index.php?' . http_build_query($query); + + /** @var ServerRequestInterface $request */ + $request = $server_request_factory + ->createServerRequest($method, $uri) + ->withQueryParams($query) + ->withParsedBody($params) + ->withUploadedFiles($files); + + app()->instance(ServerRequestInterface::class, $request); + + return $request; + } + + /** + * Create an uploaded file for a request. + * + * @param string $filename + * @param string $mime_type + * + * @return UploadedFileInterface + */ + protected function createUploadedFile(string $filename, string $mime_type): UploadedFileInterface + { + /** @var StreamFactoryInterface */ + $stream_factory = app(StreamFactoryInterface::class); + + /** @var UploadedFileFactoryInterface */ + $uploaded_file_factory = app(UploadedFileFactoryInterface::class); + + $stream = $stream_factory->createStreamFromFile($filename); + + $size = filesize($filename); + + $status = UPLOAD_ERR_OK; + + $client_name = basename($filename); + + return $uploaded_file_factory->createUploadedFile($stream, $size, $status, $client_name, $mime_type); + } } diff --git a/tests/app/Http/Controllers/Admin/ChangesLogControllerTest.php b/tests/app/Http/Controllers/Admin/ChangesLogControllerTest.php index 217ab4e1a1..6ebcf839da 100644 --- a/tests/app/Http/Controllers/Admin/ChangesLogControllerTest.php +++ b/tests/app/Http/Controllers/Admin/ChangesLogControllerTest.php @@ -21,16 +21,16 @@ use Fisharebest\Algorithm\MyersDiff; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Services\DatatablesService; use Fisharebest\Webtrees\Services\UserService; +use Fisharebest\Webtrees\TestCase; use Fisharebest\Webtrees\Tree; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; +use Fisharebest\Webtrees\Http\Request; /** * Test the changes log controller * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\ChangesLogController */ -class ChangesLogControllerTest extends \Fisharebest\Webtrees\TestCase +class ChangesLogControllerTest extends TestCase { protected static $uses_database = true; @@ -39,10 +39,11 @@ class ChangesLogControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testChangeLog(): void { - $controller = new ChangesLogController(); - $response = $controller->changesLog(new Request(), new UserService()); + $request = self::createRequest('GET', ['route' => 'admin-changes-log']); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $controller = new ChangesLogController(); + $response = $controller->changesLog($request, new UserService()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -55,7 +56,8 @@ class ChangesLogControllerTest extends \Fisharebest\Webtrees\TestCase Auth::login($user); $individual = $tree->createIndividual("0 @@ INDI\n1 NAME Joe Bloggs"); - $request = new Request([ + $request = self::createRequest('GET', [ + 'route' => 'admin-changes-log-data', 'search' => 'Joe', 'from' => '2000-01-01', 'to' => '2099-12-31', @@ -67,7 +69,7 @@ class ChangesLogControllerTest extends \Fisharebest\Webtrees\TestCase $controller = new ChangesLogController(); $response = $controller->changesLogData($request, new DatatablesService(), new MyersDiff()); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -80,9 +82,13 @@ class ChangesLogControllerTest extends \Fisharebest\Webtrees\TestCase Auth::login($user); $tree->createIndividual("0 @@ INDI\n1 NAME Joe Bloggs"); + $request = self::createRequest('GET', [ + 'route' => 'admin-changes-log-download', + 'ged' => $tree->name(), + ]); $controller = new ChangesLogController(); - $response = $controller->changesLogDownload(new Request()); + $response = $controller->changesLogDownload($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/ControlPanelControllerTest.php b/tests/app/Http/Controllers/Admin/ControlPanelControllerTest.php index 55fb6bcbec..0c31fc1f10 100644 --- a/tests/app/Http/Controllers/Admin/ControlPanelControllerTest.php +++ b/tests/app/Http/Controllers/Admin/ControlPanelControllerTest.php @@ -23,14 +23,14 @@ use Fisharebest\Webtrees\Services\ServerCheckService; use Fisharebest\Webtrees\Services\TimeoutService; use Fisharebest\Webtrees\Services\UpgradeService; use Fisharebest\Webtrees\Services\UserService; -use Symfony\Component\HttpFoundation\Response; +use Fisharebest\Webtrees\TestCase; /** * Test the control panel controller * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\ControlPanelController */ -class ControlPanelControllerTest extends \Fisharebest\Webtrees\TestCase +class ControlPanelControllerTest extends TestCase { protected static $uses_database = true; @@ -40,7 +40,8 @@ class ControlPanelControllerTest extends \Fisharebest\Webtrees\TestCase public function testControlPanel(): void { $controller = new ControlPanelController(); - $response = $controller->controlPanel( + self::createRequest('GET', ['route' => 'control-panel']); + $response = $controller->controlPanel( new HousekeepingService(), new UpgradeService(new TimeoutService(microtime(true))), new ModuleService(), @@ -48,7 +49,7 @@ class ControlPanelControllerTest extends \Fisharebest\Webtrees\TestCase new UserService() ); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -56,10 +57,10 @@ class ControlPanelControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testControlPanelManager(): void { - $controller = new ControlPanelController(); - $module_service = new ModuleService(); - $response = $controller->controlPanelManager($module_service); + $controller = new ControlPanelController(); + self::createRequest('GET', ['route' => 'control-panel']); + $response = $controller->controlPanelManager(new ModuleService()); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/FixLevel0MediaControllerTest.php b/tests/app/Http/Controllers/Admin/FixLevel0MediaControllerTest.php index 27bff403ff..496122873e 100644 --- a/tests/app/Http/Controllers/Admin/FixLevel0MediaControllerTest.php +++ b/tests/app/Http/Controllers/Admin/FixLevel0MediaControllerTest.php @@ -18,16 +18,15 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\Controllers\Admin; use Fisharebest\Webtrees\Services\DatatablesService; +use Fisharebest\Webtrees\TestCase; use Fisharebest\Webtrees\Tree; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; /** * Test FixLevel0MediaControllerTest class. * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\FixLevel0MediaController */ -class FixLevel0MediaControllerTest extends \Fisharebest\Webtrees\TestCase +class FixLevel0MediaControllerTest extends TestCase { protected static $uses_database = true; @@ -37,9 +36,10 @@ class FixLevel0MediaControllerTest extends \Fisharebest\Webtrees\TestCase public function testFixLevel0Media(): void { $controller = new FixLevel0MediaController(); - $response = $controller->fixLevel0Media(); + self::createRequest('GET', ['route' => 'admin-fix-level-0-media']); + $response = $controller->fixLevel0Media(); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -47,13 +47,17 @@ class FixLevel0MediaControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testFixLevel0MediaAction(): void { - $tree = Tree::create('name', 'title'); - $request = new Request(['tree_id' => $tree->id()]); - + $tree = Tree::create('name', 'title'); + $request = self::createRequest('POST', ['route' => 'admin-fix-level-0-media'], [ + 'tree_id' => $tree->id(), + 'fact_id' => '', + 'indi_xref' => '', + 'obje_xref' => '', + ]); $controller = new FixLevel0MediaController(); $response = $controller->fixLevel0MediaAction($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -63,10 +67,10 @@ class FixLevel0MediaControllerTest extends \Fisharebest\Webtrees\TestCase { $datatables_service = new DatatablesService(); $tree = Tree::create('name', 'title'); - $request = new Request(['tree_id' => $tree->id()]); $controller = new FixLevel0MediaController(); + $request = self::createRequest('GET', ['route' => 'admin-fix-level-0-media-data', ['tree_id' => $tree->id()]]); $response = $controller->fixLevel0MediaData($request, $datatables_service); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/ImportThumbnailsControllerTest.php b/tests/app/Http/Controllers/Admin/ImportThumbnailsControllerTest.php index 864099f1ae..4dc4d29944 100644 --- a/tests/app/Http/Controllers/Admin/ImportThumbnailsControllerTest.php +++ b/tests/app/Http/Controllers/Admin/ImportThumbnailsControllerTest.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\Controllers\Admin; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; +use Fisharebest\Webtrees\TestCase; /** * Test ImportThumbnailsController class. * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\ImportThumbnailsController */ -class ImportThumbnailsControllerTest extends \Fisharebest\Webtrees\TestCase +class ImportThumbnailsControllerTest extends TestCase { protected static $uses_database = true; @@ -35,9 +34,10 @@ class ImportThumbnailsControllerTest extends \Fisharebest\Webtrees\TestCase public function testWebtrees1Thumbnails(): void { $controller = new ImportThumbnailsController(); - $response = $controller->webtrees1Thumbnails(); + self::createRequest('GET', ['route' => 'admin-webtrees1-thumbs']); + $response = $controller->webtrees1Thumbnails(); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -46,9 +46,15 @@ class ImportThumbnailsControllerTest extends \Fisharebest\Webtrees\TestCase public function testWebtrees1ThumbnailsAction(): void { $controller = new ImportThumbnailsController(); - $response = $controller->webtrees1ThumbnailsAction(new Request()); + $request = self::createRequest('POST', ['route' => 'admin-webtrees1-thumbs-action'], [ + 'thumbnail' => 'foo', + 'action' => '', + 'xref' => [], + 'ged' => [], + ]); + $response = $controller->webtrees1ThumbnailsAction($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -57,8 +63,15 @@ class ImportThumbnailsControllerTest extends \Fisharebest\Webtrees\TestCase public function testWebtrees1ThumbnailsData(): void { $controller = new ImportThumbnailsController(); - $response = $controller->webtrees1ThumbnailsData(new Request()); + $request = self::createRequest('GET', [ + 'route' => 'admin-webtrees1-thumbs-data', + 'start' => '0', + 'length' => '10', + 'search' => ['value' => ''], + 'draw' => '1', + ]); + $response = $controller->webtrees1ThumbnailsData($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/LocationControllerTest.php b/tests/app/Http/Controllers/Admin/LocationControllerTest.php index 9ab0be3b7b..00e23cb9c5 100644 --- a/tests/app/Http/Controllers/Admin/LocationControllerTest.php +++ b/tests/app/Http/Controllers/Admin/LocationControllerTest.php @@ -17,17 +17,17 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\Controllers\Admin; +use Fisharebest\Webtrees\Services\GedcomService; +use Fisharebest\Webtrees\TestCase; use Fisharebest\Webtrees\Tree; -use Symfony\Component\HttpFoundation\File\UploadedFile; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; +use function dirname; /** * Test the location admin controller * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\LocationController */ -class LocationControllerTest extends \Fisharebest\Webtrees\TestCase +class LocationControllerTest extends TestCase { protected static $uses_database = true; @@ -36,10 +36,11 @@ class LocationControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testMapData(): void { - $controller = app(LocationController::class); - $response = app()->dispatch($controller, 'mapData'); + $controller = new LocationController(new GedcomService()); + $request = self::createRequest('GET', ['route' => 'map-data']); + $response = $controller->mapData($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -47,10 +48,11 @@ class LocationControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testMapDataEdit(): void { - $controller = app(LocationController::class); - $response = app()->dispatch($controller, 'mapDataEdit'); + $controller = new LocationController(new GedcomService()); + $request = self::createRequest('GET', ['route' => 'map-data-edit', 'place_id' => '0', 'parent_id' => '0']); + $response = $controller->mapDataEdit($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -58,10 +60,21 @@ class LocationControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testMapDataSave(): void { - $controller = app(LocationController::class); - $response = app()->dispatch($controller, 'mapDataSave'); + $controller = new LocationController(new GedcomService()); + $request = self::createRequest('POST', ['route' => 'map-data-edit'], [ + 'parent_id' => '0', + 'place_id' => '0', + 'new_place_lati' => '-12.345', + 'new_place_long' => '-123.45', + 'icon' => '', + 'new_zoom_factor' => '2', + 'new_place_name' => 'place', + 'lati_control' => 'S', + 'long_control' => 'W', + ]); + $response = $controller->mapDataSave($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -69,10 +82,11 @@ class LocationControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testMapDataDelete(): void { - $controller = app(LocationController::class); - $response = app()->dispatch($controller, 'mapDataDelete'); + $controller = new LocationController(new GedcomService()); + $request = self::createRequest('POST', ['route' => 'map-data-delete'], ['parent_id' => '0', 'place_id' => '0']); + $response = $controller->mapDataDelete($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -80,10 +94,12 @@ class LocationControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testExportLocations(): void { - $controller = app(LocationController::class); - $response = app()->dispatch($controller, 'exportLocations'); + $controller = new LocationController(new GedcomService()); + $request = self::createRequest('GET', ['route' => 'locations-export', 'parent_id' => '0', 'format' => 'geojson']); + $response = $controller->exportLocations($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + $this->assertSame($response->getHeaderLine('Content-type'), 'application/vnd.geo+json'); } /** @@ -91,10 +107,11 @@ class LocationControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testImportLocations(): void { - $controller = app(LocationController::class); - $response = app()->dispatch($controller, 'importLocations'); + $controller = new LocationController(new GedcomService()); + $request = self::createRequest('GET', ['route' => 'locations-import'], ['parent_id' => '0']); + $response = $controller->importLocations($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -102,14 +119,12 @@ class LocationControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testImportLocationsAction(): void { - $csv = new UploadedFile(dirname(__DIR__, 4) . '/data/places.csv', 'places.csv', 'image/jpeg', UPLOAD_ERR_OK); + $csv = $this->createUploadedFile(dirname(__DIR__, 4) . '/data/places.csv', 'text/csv'); + $controller = new LocationController(new GedcomService()); + $request = self::createRequest('POST', ['route' => 'locations-import'], ['parent_id' => '0'], ['csv' => $csv]); + $response = $controller->importLocationsAction($request); - app()->instance(Request::class, new Request([], [], [], [], ['localfile' => $csv])); - - $controller = app(LocationController::class); - $response = app()->dispatch($controller, 'importLocationsAction'); - - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -117,11 +132,11 @@ class LocationControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testImportLocationsFromTree(): void { - app()->instance(Tree::class, Tree::create('name', 'title')); - - $controller = app(LocationController::class); - $response = app()->dispatch($controller, 'importLocationsFromTree'); + $tree = Tree::create('name', 'title'); + $controller = new LocationController(new GedcomService()); + self::createRequest('POST', ['route' => 'locations-import-from-tree']); + $response = $controller->importLocationsFromTree($tree); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/MapProviderControllerTest.php b/tests/app/Http/Controllers/Admin/MapProviderControllerTest.php index aeffefe1bc..16f251ea37 100644 --- a/tests/app/Http/Controllers/Admin/MapProviderControllerTest.php +++ b/tests/app/Http/Controllers/Admin/MapProviderControllerTest.php @@ -17,14 +17,15 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\Controllers\Admin; -use Symfony\Component\HttpFoundation\Response; +use Fisharebest\Webtrees\TestCase; +use Psr\Http\Message\ResponseInterface; /** * Test the changes log controller * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\MapProviderController */ -class MapProviderControllerTest extends \Fisharebest\Webtrees\TestCase +class MapProviderControllerTest extends TestCase { protected static $uses_database = true; @@ -33,10 +34,11 @@ class MapProviderControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testMapProviderEdit(): void { - $controller = app(MapProviderController::class); - $response = app()->dispatch($controller, 'mapProviderEdit'); + $controller = new MapProviderController(); + self::createRequest('GET', ['route' => 'map-provider']); + $response = $controller->mapProviderEdit(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -44,9 +46,10 @@ class MapProviderControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testMapProviderSave(): void { - $controller = app(MapProviderController::class); - $response = app()->dispatch($controller, 'mapProviderSave'); + $controller = new MapProviderController(); + $request = self::createRequest('POST', ['route' => 'map-provider'], ['provider' => '']); + $response = $controller->mapProviderSave($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/MediaControllerTest.php b/tests/app/Http/Controllers/Admin/MediaControllerTest.php index 75bb205ff1..fb47fccb94 100644 --- a/tests/app/Http/Controllers/Admin/MediaControllerTest.php +++ b/tests/app/Http/Controllers/Admin/MediaControllerTest.php @@ -17,15 +17,15 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\Controllers\Admin; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; +use Fisharebest\Webtrees\Services\DatatablesService; +use Fisharebest\Webtrees\TestCase; /** * Test MediaController class. * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\MediaController */ -class MediaControllerTest extends \Fisharebest\Webtrees\TestCase +class MediaControllerTest extends TestCase { protected static $uses_database = true; @@ -34,10 +34,11 @@ class MediaControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testIndex(): void { - $controller = app(MediaController::class); - $response = app()->dispatch($controller, 'index'); + $controller = new MediaController(); + $request = self::createRequest('GET', ['route' => 'admin-media']); + $response = $controller->index($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -45,11 +46,19 @@ class MediaControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testDataLocal(): void { - app()->instance(Request::class, new Request(['files' => 'local'])); - $controller = app(MediaController::class); - $response = app()->dispatch($controller, 'data'); + $controller = new MediaController(); + $request = self::createRequest('GET', [ + 'route' => 'admin-media-data', + 'files' => 'local', + 'media_folder' => '', + 'subfolders' => 'include', + 'search' => ['value' => ''], + 'start' => '0', + 'length' => '10', + ]); + $response = $controller->data($request, new DatatablesService()); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -57,11 +66,19 @@ class MediaControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testDataExternal(): void { - app()->instance(Request::class, new Request(['files' => 'external'])); - $controller = app(MediaController::class); - $response = app()->dispatch($controller, 'data'); + $controller = new MediaController(); + $request = self::createRequest('GET', [ + 'route' => 'admin-media-external', + 'files' => 'local', + 'media_folder' => '', + 'subfolders' => 'include', + 'search' => ['value' => ''], + 'start' => '0', + 'length' => '10', + ]); + $response = $controller->data($request, new DatatablesService()); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -69,11 +86,19 @@ class MediaControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testDataUnused(): void { - app()->instance(Request::class, new Request(['files' => 'unused'])); - $controller = app(MediaController::class); - $response = app()->dispatch($controller, 'data'); + $controller = new MediaController(); + $request = self::createRequest('GET', [ + 'route' => 'admin-media-unused', + 'files' => 'local', + 'media_folder' => '', + 'subfolders' => 'include', + 'search' => ['value' => ''], + 'start' => '0', + 'length' => '10', + ]); + $response = $controller->data($request, new DatatablesService()); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -81,10 +106,11 @@ class MediaControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testDelete(): void { - $controller = app(MediaController::class); - $response = app()->dispatch($controller, 'delete'); + $controller = new MediaController(); + $request = self::createRequest('POST', ['route' => 'admin-media-delete'], ['file' => 'foo', 'folder' => 'bar']); + $response = $controller->delete($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -92,10 +118,11 @@ class MediaControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testUpload(): void { - $controller = app(MediaController::class); - $response = app()->dispatch($controller, 'upload'); + $controller = new MediaController(); + self::createRequest('GET', ['route' => 'admin-media-upload']); + $response = $controller->upload(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -103,9 +130,10 @@ class MediaControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testUploadAction(): void { - $controller = app(MediaController::class); - $response = app()->dispatch($controller, 'uploadAction'); + $controller = new MediaController(); + $request = self::createRequest('POST', ['route' => 'admin-media-delete']); + $response = $controller->uploadAction($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/ModuleControllerTest.php b/tests/app/Http/Controllers/Admin/ModuleControllerTest.php index de9d412ce4..ebeb6dbccd 100644 --- a/tests/app/Http/Controllers/Admin/ModuleControllerTest.php +++ b/tests/app/Http/Controllers/Admin/ModuleControllerTest.php @@ -17,15 +17,16 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\Controllers\Admin; +use Fisharebest\Webtrees\Services\ModuleService; +use Fisharebest\Webtrees\TestCase; use Fisharebest\Webtrees\Tree; -use Symfony\Component\HttpFoundation\Response; /** * Test the module admin controller * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\ModuleController */ -class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase +class ModuleControllerTest extends TestCase { protected static $uses_database = true; @@ -34,10 +35,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testList(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'list'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'modules']); + $response = $controller->list(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -45,10 +47,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListAnalytics(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listAnalytics'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'analytics']); + $response = $controller->listAnalytics(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -56,10 +59,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListBlocks(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listBlocks'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'blocks']); + $response = $controller->listBlocks(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -67,10 +71,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListCharts(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listCharts'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'charts']); + $response = $controller->listCharts(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -78,10 +83,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListFooters(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listFooters'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'footers']); + $response = $controller->listFooters(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -89,10 +95,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListHistory(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listHistory'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'history']); + $response = $controller->listHistory(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -100,10 +107,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListLanguages(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listLanguages'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'languages']); + $response = $controller->listLanguages(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -111,10 +119,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListMenus(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listMenus'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'menus']); + $response = $controller->listMenus(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -122,10 +131,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListReports(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listReports'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'reports']); + $response = $controller->listReports(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -133,10 +143,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListSidebars(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listSidebars'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'sidebars']); + $response = $controller->listSidebars(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -144,10 +155,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListTabs(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listTabs'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'tabs']); + $response = $controller->listTabs(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -155,10 +167,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testListThemes(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'listThemes'); + $controller = new ModuleController(new ModuleService()); + self::createRequest('GET', ['route' => 'themes']); + $response = $controller->listThemes(); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -167,10 +180,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdate(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'update'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'modules']); + $response = $controller->update($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -179,10 +193,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateAnalytics(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateAnalytics'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'analytics']); + $response = $controller->updateAnalytics($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -191,10 +206,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateBlocks(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateBlocks'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'blocks']); + $response = $controller->updateBlocks($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -203,10 +219,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateCharts(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateCharts'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'charts']); + $response = $controller->updateCharts($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -215,10 +232,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateFooters(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateFooters'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'footers']); + $response = $controller->updateFooters($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -227,10 +245,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateHistory(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateHistory'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'history']); + $response = $controller->updateHistory($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -239,10 +258,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateLanguages(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateLanguages'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'languages']); + $response = $controller->updateLanguages($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -251,10 +271,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateMenus(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateMenus'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'menus']); + $response = $controller->updateMenus($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -263,10 +284,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateReports(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateReports'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'reports']); + $response = $controller->updateReports($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -275,10 +297,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateSidebars(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateSidebars'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'sidebars']); + $response = $controller->updateSidebars($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -287,10 +310,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateTabs(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateTabs'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'tabs']); + $response = $controller->updateTabs($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -299,10 +323,11 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase public function testUpdateThemes(): void { Tree::create('name', 'title'); - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'updateThemes'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'themes']); + $response = $controller->updateThemes($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -310,9 +335,10 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase */ public function testDeleteModuleSettings(): void { - $controller = app(ModuleController::class); - $response = app()->dispatch($controller, 'deleteModuleSettings'); + $controller = new ModuleController(new ModuleService()); + $request = self::createRequest('POST', ['route' => 'delete-module-settings'], ['module_name' => 'foo']); + $response = $controller->deleteModuleSettings($request); - $this->assertInstanceOf(Response::class, $response); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/UpgradeControllerTest.php b/tests/app/Http/Controllers/Admin/UpgradeControllerTest.php index 12a27e0d65..0f88bddcbe 100644 --- a/tests/app/Http/Controllers/Admin/UpgradeControllerTest.php +++ b/tests/app/Http/Controllers/Admin/UpgradeControllerTest.php @@ -22,19 +22,18 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Services\TimeoutService; use Fisharebest\Webtrees\Services\UpgradeService; use Fisharebest\Webtrees\Services\UserService; +use Fisharebest\Webtrees\TestCase; use Fisharebest\Webtrees\Tree; use Illuminate\Support\Collection; use League\Flysystem\Filesystem; use League\Flysystem\Memory\MemoryAdapter; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; /** * Test UpgradeController class. * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\UpgradeController */ -class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase +class UpgradeControllerTest extends TestCase { protected static $uses_database = true; @@ -45,12 +44,13 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase { $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), - new UpgradeService(new TimeoutService(microtime(true))) + new UpgradeService(new TimeoutService()) ); - $response = $controller->wizard(new Request()); + $request = self::createRequest('GET', ['route' => 'wizard']); + $response = $controller->wizard($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -62,12 +62,13 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), - new UpgradeService(new TimeoutService(microtime(true))) + new UpgradeService(new TimeoutService()) ); - $response = $controller->wizard(new Request(['continue' => '1'])); + $request = self::createRequest('GET', ['route' => 'wizard', 'continue' => '1']); + $response = $controller->wizard($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -78,10 +79,11 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase { $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), - new UpgradeService(new TimeoutService(microtime(true))) + new UpgradeService(new TimeoutService()) ); - $controller->step(new Request(['step' => 'Invalid']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Invalid']); + $controller->step($request, null); } /** @@ -96,9 +98,10 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $mock_upgrade_service ); - $response = $controller->step(new Request(['step' => 'Check']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Check']); + $response = $controller->step($request, null); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -114,7 +117,8 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $mock_upgrade_service ); - $controller->step(new Request(['step' => 'Check']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Check']); + $controller->step($request, null); } /** @@ -130,7 +134,8 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $mock_upgrade_service ); - $controller->step(new Request(['step' => 'Check']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Check']); + $controller->step($request, null); } /** @@ -140,12 +145,13 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase { $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), - new UpgradeService(new TimeoutService(microtime(true))) + new UpgradeService(new TimeoutService()) ); - $response = $controller->step(new Request(['step' => 'Prepare']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Prepare']); + $response = $controller->step($request, null); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -155,19 +161,20 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase { $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), - new UpgradeService(new TimeoutService(microtime(true))) + new UpgradeService(new TimeoutService()) ); - $response = $controller->step(new Request(['step' => 'Pending']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Pending']); + $response = $controller->step($request, null); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** * @expectedException \Fisharebest\Webtrees\Exceptions\InternalServerErrorException * @return void */ - public function testStepPendingEzist(): void + public function testStepPendingExist(): void { $tree = Tree::create('name', 'title'); $user = (new UserService)->create('user', 'name', 'email', 'password'); @@ -176,10 +183,11 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), - new UpgradeService(new TimeoutService(microtime(true))) + new UpgradeService(new TimeoutService()) ); - $controller->step(new Request(['step' => 'Pending']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Pending']); + $controller->step($request, null); } /** @@ -190,17 +198,18 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $tree = $this->importTree('demo.ged'); $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), - new UpgradeService(new TimeoutService(microtime(true))) + new UpgradeService(new TimeoutService()) ); - $response = $controller->step(new Request(['step' => 'Export']), $tree); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Export']); + $response = $controller->step($request, $tree); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); // Now overwrite the file we just created - $response = $controller->step(new Request(['step' => 'Export']), $tree); + $response = $controller->step($request, $tree); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -216,7 +225,8 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $mock_upgrade_service ); - $controller->step(new Request(['step' => 'Download']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Download']); + $controller->step($request, null); } /** @@ -231,9 +241,10 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $mock_upgrade_service ); - $response = $controller->step(new Request(['step' => 'Download']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Download']); + $response = $controller->step($request, null); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -248,9 +259,10 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase $mock_upgrade_service ); - $response = $controller->step(new Request(['step' => 'Unzip']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Unzip']); + $response = $controller->step($request, null); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -260,12 +272,13 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase { $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), - new UpgradeService(new TimeoutService(microtime(true))) + new UpgradeService(new TimeoutService()) ); - $response = $controller->step(new Request(['step' => 'Copy']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Copy']); + $response = $controller->step($request, null); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -274,13 +287,14 @@ class UpgradeControllerTest extends \Fisharebest\Webtrees\TestCase public function testStepCleanup(): void { $mock_upgrade_service = $this->createMock(UpgradeService::class); - $controller = new UpgradeController( + $controller = new UpgradeController( new Filesystem(new MemoryAdapter()), $mock_upgrade_service ); - $response = $controller->step(new Request(['step' => 'Cleanup']), null); + $request = self::createRequest('POST', ['route' => 'wizard'], ['step' => 'Cleanup']); + $response = $controller->step($request, null); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/Admin/UsersControllerTest.php b/tests/app/Http/Controllers/Admin/UsersControllerTest.php index cc1dda80c2..5e453989e8 100644 --- a/tests/app/Http/Controllers/Admin/UsersControllerTest.php +++ b/tests/app/Http/Controllers/Admin/UsersControllerTest.php @@ -21,16 +21,15 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Services\DatatablesService; use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Services\UserService; +use Fisharebest\Webtrees\TestCase; use Fisharebest\Webtrees\User; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; /** * Test UsersController class. * * @covers \Fisharebest\Webtrees\Http\Controllers\Admin\UsersController */ -class UsersControllerTest extends \Fisharebest\Webtrees\TestCase +class UsersControllerTest extends TestCase { protected static $uses_database = true; @@ -40,9 +39,10 @@ class UsersControllerTest extends \Fisharebest\Webtrees\TestCase public function testIndex(): void { $controller = new UsersController(new ModuleService(), new UserService()); - $response = $controller->index(new Request(), Auth::user()); + $request = self::createRequest('GET', ['route' => 'admin-users']); + $response = $controller->index($request, Auth::user()); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -51,9 +51,10 @@ class UsersControllerTest extends \Fisharebest\Webtrees\TestCase public function testData(): void { $controller = new UsersController(new ModuleService(), new UserService()); - $response = $controller->data(new DatatablesService(), new Request(), Auth::User()); + $request = self::createRequest('GET', ['route' => 'admin-users-data']); + $response = $controller->data(new DatatablesService(), $request, Auth::User()); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -62,9 +63,10 @@ class UsersControllerTest extends \Fisharebest\Webtrees\TestCase public function testCreate(): void { $controller = new UsersController(new ModuleService(), new UserService()); - $response = $controller->create(new Request()); + $request = self::createRequest('GET', ['route' => 'admin-users-create']); + $response = $controller->create($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -73,9 +75,15 @@ class UsersControllerTest extends \Fisharebest\Webtrees\TestCase public function testSave(): void { $controller = new UsersController(new ModuleService(), new UserService()); - $response = $controller->save(new Request()); + $request = self::createRequest('POST', ['route' => 'admin-users-create'], [ + 'username' => 'User name', + 'email' => 'email@example.com', + 'real_name' => 'Real Name', + 'password' => 'Secret1234', + ]); + $response = $controller->save($request); - $this->assertSame(Response::HTTP_FOUND, $response->getStatusCode()); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -85,9 +93,10 @@ class UsersControllerTest extends \Fisharebest\Webtrees\TestCase { $user = (new UserService)->create('user', 'real', 'email', 'pass'); $controller = new UsersController(new ModuleService(), new UserService()); - $response = $controller->edit(new Request(['user_id' => $user->id()])); + $request = self::createRequest('GET', ['route' => 'admin-users-edit', 'user_id' => (string) $user->id()]); + $response = $controller->edit($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -98,9 +107,26 @@ class UsersControllerTest extends \Fisharebest\Webtrees\TestCase /** @var User $user */ $user = (new UserService)->create('user', 'real', 'email', 'pass'); $controller = new UsersController(new ModuleService(), new UserService()); - $response = $controller->update(new Request(['user_id' => $user->id()]), $user); + $request = self::createRequest('POST', ['route' => 'admin-users-edit'], [ + 'user_id' => $user->id(), + 'username' => '', + 'real_name' => '', + 'email' => '', + 'theme' => '', + 'password' => '', + 'language' => '', + 'timezone' => '', + 'comment' => '', + 'contact_method' => '', + 'auto_accept' => '', + 'canadmin' => '', + 'visible_online' => '', + 'verified' => '', + 'approved' => '', + ]); + $response = $controller->update($request, $user); - $this->assertSame(Response::HTTP_FOUND, $response->getStatusCode()); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } /** @@ -109,9 +135,10 @@ class UsersControllerTest extends \Fisharebest\Webtrees\TestCase public function testCleanup(): void { $controller = new UsersController(new ModuleService(), new UserService()); - $response = $controller->cleanup(new Request()); + $request = self::createRequest('GET', ['route' => 'admin-users-cleanup']); + $response = $controller->cleanup($request); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } /** @@ -120,8 +147,9 @@ class UsersControllerTest extends \Fisharebest\Webtrees\TestCase public function testCleanupAction(): void { $controller = new UsersController(new ModuleService(), new UserService()); - $response = $controller->cleanupAction(new Request()); + $request = self::createRequest('POST', ['route' => 'admin-users-cleanup']); + $response = $controller->cleanupAction($request); - $this->assertSame(Response::HTTP_FOUND, $response->getStatusCode()); + $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/CalendarControllerTest.php b/tests/app/Http/Controllers/CalendarControllerTest.php index 676ae207f8..1a2e44293a 100644 --- a/tests/app/Http/Controllers/CalendarControllerTest.php +++ b/tests/app/Http/Controllers/CalendarControllerTest.php @@ -17,15 +17,12 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\Controllers; +use function app; use Fisharebest\Localization\Locale\LocaleEnUs; -use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Module\SiteMapModule; use Fisharebest\Webtrees\Services\CalendarService; use Fisharebest\Webtrees\Services\LocalizationService; -use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Tree; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; +use Fisharebest\Webtrees\Http\Request; /** * Test the module controller @@ -50,22 +47,28 @@ class CalendarControllerTest extends \Fisharebest\Webtrees\TestCase $localization_service = new LocalizationService(new LocaleEnUs()); $controller = new CalendarController($calendar_service, $localization_service); - $request = new Request(['view' => 'day']); + $request = self::createRequest('GET', ['route' => 'calendar', 'view' => 'day']); $response = $controller->page($request, $tree); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + + $request = self::createRequest('GET', ['route' => 'calendar-events', 'view' => 'day']); $response = $controller->calendar($request, $tree); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = new Request(['view' => 'month']); + $request = self::createRequest('GET', ['route' => 'calendar', 'view' => 'month']); $response = $controller->page($request, $tree); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + + $request = self::createRequest('GET', ['route' => 'calendar-events', 'view' => 'month']); $response = $controller->calendar($request, $tree); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = new Request(['view' => 'year']); + $request = self::createRequest('GET', ['route' => 'calendar', 'view' => 'year']); $response = $controller->page($request, $tree); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + + $request = self::createRequest('GET', ['route' => 'calendar-events', 'view' => 'year']); $response = $controller->calendar($request, $tree); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } } diff --git a/tests/app/Http/Controllers/ModuleControllerTest.php b/tests/app/Http/Controllers/ModuleControllerTest.php index f85f762eac..a8b24b7aed 100644 --- a/tests/app/Http/Controllers/ModuleControllerTest.php +++ b/tests/app/Http/Controllers/ModuleControllerTest.php @@ -20,8 +20,7 @@ namespace Fisharebest\Webtrees\Http\Controllers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Module\SiteMapModule; use Fisharebest\Webtrees\Services\ModuleService; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; +use Fisharebest\Webtrees\Http\Request; /** * Test the module controller @@ -104,6 +103,6 @@ class ModuleControllerTest extends \Fisharebest\Webtrees\TestCase $controller = new ModuleController($module_service); $response = $controller->action($request, Auth::user()); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } } diff --git a/tests/feature/IndividualListTest.php b/tests/feature/IndividualListTest.php index 46af7d23b8..aa30498e31 100644 --- a/tests/feature/IndividualListTest.php +++ b/tests/feature/IndividualListTest.php @@ -22,8 +22,6 @@ use Fisharebest\Webtrees\Http\Controllers\ListController; use Fisharebest\Webtrees\Module\IndividualListModule; use Fisharebest\Webtrees\Services\IndividualListService; use Fisharebest\Webtrees\Services\LocalizationService; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; /** * Test the individual lists. @@ -50,24 +48,28 @@ class IndividualListTest extends TestCase $individual_list_service = new IndividualListService($localization_service, $tree); $controller = new ListController($individual_list_service, $localization_service); - $request = new Request(['route' => 'module', 'module' => 'individual_list', 'action' => 'List']); + $request = self::createRequest('GET', [ + 'route' => 'module', + 'module' => 'individual_list', + 'action' => 'List', + ]); $response = $controller->individualList($request, $tree, $user, $list_module); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = new Request(['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => 'B']); + $request = self::createRequest('GET', ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => 'B']); $response = $controller->individualList($request, $tree, $user, $list_module); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = new Request(['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => ',']); + $request = self::createRequest('GET', ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => ',']); $response = $controller->individualList($request, $tree, $user, $list_module); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = new Request(['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => '@']); + $request = self::createRequest('GET', ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => '@']); $response = $controller->individualList($request, $tree, $user, $list_module); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = new Request(['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'surname' => 'BRAUN']); + $request = self::createRequest('GET', ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'surname' => 'BRAUN']); $response = $controller->individualList($request, $tree, $user, $list_module); - $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); } } diff --git a/tests/feature/UserAdminTest.php b/tests/feature/UserAdminTest.php index 2656504ff6..dc8a8e0838 100644 --- a/tests/feature/UserAdminTest.php +++ b/tests/feature/UserAdminTest.php @@ -18,8 +18,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; use Fisharebest\Webtrees\Http\Controllers\Admin\UsersController; +use Fisharebest\Webtrees\Http\Request; +use Fisharebest\Webtrees\Services\DatatablesService; +use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Services\UserService; -use Symfony\Component\HttpFoundation\Request; +use Psr\Http\Message\ServerRequestInterface; /** * Test the user administration pages @@ -36,18 +39,25 @@ class UserAdminTest extends TestCase public function testUserDetailsAreShownOnUserAdminPage(): void { $user_service = new UserService(); - $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); + $admin = $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); - $controller = app(UsersController::class); - $response = app()->dispatch($controller, 'data'); + $request = self::createRequest('GET', [ + 'length' => '10', + ]); - $this->assertContains('AdminName', $response->getContent()); - $this->assertContains('Administrator', $response->getContent()); - $this->assertContains('admin@example.com', $response->getContent()); - $this->assertContains('UserName', $response->getContent()); - $this->assertContains('RealName', $response->getContent()); - $this->assertContains('user@example.com', $response->getContent()); + $controller = new UsersController(new ModuleService(), new UserService()); + $response = $controller->data(new DatatablesService(), $request, $admin); + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + $this->assertSame('application/json', $response->getHeaderLine('Content-type')); + $html = (string) $response->getBody(); + + $this->assertContains('AdminName', $html); + $this->assertContains('Administrator', $html); + $this->assertContains('admin@example.com', $html); + $this->assertContains('UserName', $html); + $this->assertContains('RealName', $html); + $this->assertContains('user@example.com', $html); } /** @@ -58,20 +68,25 @@ class UserAdminTest extends TestCase public function testFilteringUserAdminPage(): void { $user_service = new UserService(); - $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); + $admin = $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $request = new Request(['search' => ['value' => 'admin']]); - app()->instance(Request::class, $request); - $controller = app(UsersController::class); - $response = app()->dispatch($controller, 'data'); + app()->instance(ServerRequestInterface::class, $request); + + $controller = new UsersController(new ModuleService(), new UserService()); + $response = $controller->data(new DatatablesService(), $request, $admin); + + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + $this->assertSame('application/json', $response->getHeaderLine('Content-type')); + $html = (string) $response->getBody(); - $this->assertContains('AdminName', $response->getContent()); - $this->assertContains('Administrator', $response->getContent()); - $this->assertContains('admin@example.com', $response->getContent()); - $this->assertNotContains('UserName', $response->getContent()); - $this->assertNotContains('RealName', $response->getContent()); - $this->assertNotContains('user@example.com', $response->getContent()); + $this->assertContains('AdminName', $html); + $this->assertContains('Administrator', $html); + $this->assertContains('admin@example.com', $html); + $this->assertNotContains('UserName', $html); + $this->assertNotContains('RealName', $html); + $this->assertNotContains('user@example.com', $html); } /** @@ -82,16 +97,21 @@ class UserAdminTest extends TestCase public function testPaginatingUserAdminPage(): void { $user_service = new UserService(); - $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); + $admin = $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $request = new Request(['length' => 1]); - app()->instance(Request::class, $request); - $controller = app(UsersController::class); - $response = app()->dispatch($controller, 'data'); + app()->instance(ServerRequestInterface::class, $request); + + $controller = new UsersController(new ModuleService(), new UserService()); + $response = $controller->data(new DatatablesService(), $request, $admin); + + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + $this->assertSame('application/json', $response->getHeaderLine('Content-type')); + $html = (string) $response->getBody(); - $this->assertContains('AdminName', $response->getContent()); - $this->assertNotContains('UserName', $response->getContent()); + $this->assertContains('AdminName', $html); + $this->assertNotContains('UserName', $html); } /** @@ -102,25 +122,35 @@ class UserAdminTest extends TestCase public function testSortingUserAdminPage(): void { $user_service = new UserService(); - $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); + $admin = $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $request = new Request(['order' => [['column' => 2, 'dir' => 'asc']]]); - app()->instance(Request::class, $request); - $controller = app(UsersController::class); - $response = app()->dispatch($controller, 'data'); + app()->instance(ServerRequestInterface::class, $request); - $pos1 = strpos($response->getContent(), 'AdminName'); - $pos2 = strpos($response->getContent(), 'UserName'); + $controller = new UsersController(new ModuleService(), new UserService()); + $response = $controller->data(new DatatablesService(), $request, $admin); + + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + $this->assertSame('application/json', $response->getHeaderLine('Content-type')); + $html = (string) $response->getBody(); + + $pos1 = strpos($html, 'AdminName'); + $pos2 = strpos($html, 'UserName'); $this->assertLessThan($pos2, $pos1); $request = new Request(['order' => [['column' => 2, 'dir' => 'desc']]]); - app()->instance(Request::class, $request); - $controller = app(UsersController::class); - $response = app()->dispatch($controller, 'data'); + app()->instance(ServerRequestInterface::class, $request); + + $controller = new UsersController(new ModuleService(), new UserService()); + $response = $controller->data(new DatatablesService(), $request, $admin); + + $this->assertSame(self::STATUS_OK, $response->getStatusCode()); + $this->assertSame('application/json', $response->getHeaderLine('Content-type')); + $html = (string) $response->getBody(); - $pos1 = strpos($response->getContent(), 'AdminName'); - $pos2 = strpos($response->getContent(), 'UserName'); + $pos1 = strpos($html, 'AdminName'); + $pos2 = strpos($html, 'UserName'); $this->assertGreaterThan($pos2, $pos1); } } |
