Merge pull request #18880 from MauricioFauth/database-controller-test
Add unit test for DatabaseController
This commit is contained in:
commit
5ce96dadb6
@ -398,7 +398,7 @@ return [
|
||||
],
|
||||
DatabaseController::class => [
|
||||
'class' => DatabaseController::class,
|
||||
'arguments' => ['$response' => '@response', '$template' => '@template'],
|
||||
'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'],
|
||||
],
|
||||
ErrorReportController::class => [
|
||||
'class' => ErrorReportController::class,
|
||||
|
||||
@ -1684,9 +1684,6 @@
|
||||
</PossiblyUnusedMethod>
|
||||
</file>
|
||||
<file src="src/Controllers/DatabaseController.php">
|
||||
<DeprecatedMethod>
|
||||
<code>DatabaseInterface::getInstance()</code>
|
||||
</DeprecatedMethod>
|
||||
<UnusedParam>
|
||||
<code>$request</code>
|
||||
</UnusedParam>
|
||||
|
||||
@ -6,11 +6,18 @@ namespace PhpMyAdmin\Controllers;
|
||||
|
||||
use PhpMyAdmin\DatabaseInterface;
|
||||
use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Template;
|
||||
|
||||
final class DatabaseController extends AbstractController
|
||||
{
|
||||
public function __construct(ResponseRenderer $response, Template $template, private readonly DatabaseInterface $dbi)
|
||||
{
|
||||
parent::__construct($response, $template);
|
||||
}
|
||||
|
||||
public function __invoke(ServerRequest $request): void
|
||||
{
|
||||
$this->response->addJSON(['databases' => DatabaseInterface::getInstance()->getDatabaseList()]);
|
||||
$this->response->addJSON(['databases' => $this->dbi->getDatabaseList()]);
|
||||
}
|
||||
}
|
||||
|
||||
44
tests/classes/Controllers/DatabaseControllerTest.php
Normal file
44
tests/classes/Controllers/DatabaseControllerTest.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace PhpMyAdmin\Tests\Controllers;
|
||||
|
||||
use PhpMyAdmin\Config;
|
||||
use PhpMyAdmin\Controllers\DatabaseController;
|
||||
use PhpMyAdmin\DatabaseInterface;
|
||||
use PhpMyAdmin\Http\Factory\ServerRequestFactory;
|
||||
use PhpMyAdmin\ListDatabase;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Tests\AbstractTestCase;
|
||||
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
|
||||
#[CoversClass(DatabaseController::class)]
|
||||
class DatabaseControllerTest extends AbstractTestCase
|
||||
{
|
||||
public function testDatabaseController(): void
|
||||
{
|
||||
$request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/');
|
||||
|
||||
$dbiDummy = $this->createDbiDummy();
|
||||
$dbi = $this->createDatabaseInterface($dbiDummy);
|
||||
DatabaseInterface::$instance = $dbi;
|
||||
$dbiDummy->addResult(
|
||||
'SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`',
|
||||
[['test_db_1'], ['test_db_2']],
|
||||
['SCHEMA_NAME'],
|
||||
);
|
||||
|
||||
$responseRenderer = new ResponseRenderer();
|
||||
$controller = new DatabaseController($responseRenderer, new Template(new Config()), $dbi);
|
||||
$controller($request);
|
||||
|
||||
$output = $responseRenderer->getJSONResult();
|
||||
self::assertArrayHasKey('databases', $output);
|
||||
self::assertInstanceOf(ListDatabase::class, $output['databases']);
|
||||
self::assertSame(['test_db_1', 'test_db_2'], $output['databases']->getArrayCopy());
|
||||
|
||||
$dbiDummy->assertAllQueriesConsumed();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user