Move SetConfigController to Controller\Navigation namespace

Changes the route to /navigation/update-width.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2024-03-30 21:36:05 -03:00
parent 6482dfa28b
commit adc834f1ae
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
7 changed files with 111 additions and 21 deletions

View File

@ -8,7 +8,6 @@ use PhpMyAdmin\Controllers\ChangeLogController;
use PhpMyAdmin\Controllers\CheckRelationsController;
use PhpMyAdmin\Controllers\CollationConnectionController;
use PhpMyAdmin\Controllers\ColumnController;
use PhpMyAdmin\Controllers\Config;
use PhpMyAdmin\Controllers\Console;
use PhpMyAdmin\Controllers\Database;
use PhpMyAdmin\Controllers\DatabaseController;
@ -22,6 +21,7 @@ use PhpMyAdmin\Controllers\JavaScriptMessagesController;
use PhpMyAdmin\Controllers\LicenseController;
use PhpMyAdmin\Controllers\LintController;
use PhpMyAdmin\Controllers\LogoutController;
use PhpMyAdmin\Controllers\Navigation\UpdateNavWidthConfigController;
use PhpMyAdmin\Controllers\NavigationController;
use PhpMyAdmin\Controllers\Normalization;
use PhpMyAdmin\Controllers\Operations;
@ -73,8 +73,8 @@ return [
'class' => ColumnController::class,
'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'],
],
Config\SetConfigController::class => [
'class' => Config\SetConfigController::class,
UpdateNavWidthConfigController::class => [
'class' => UpdateNavWidthConfigController::class,
'arguments' => ['$response' => '@response', '$template' => '@template', '$config' => '@config'],
],
Console\Bookmark\AddController::class => [

View File

@ -854,11 +854,6 @@
<code><![CDATA[Config::getInstance()]]></code>
</DeprecatedMethod>
</file>
<file src="src/Controllers/Config/SetConfigController.php">
<PossiblyUnusedMethod>
<code><![CDATA[__construct]]></code>
</PossiblyUnusedMethod>
</file>
<file src="src/Controllers/Console/Bookmark/AddController.php">
<DeprecatedMethod>
<code><![CDATA[Config::getInstance()]]></code>
@ -12565,6 +12560,12 @@
<code><![CDATA[Config::getInstance()]]></code>
</DeprecatedMethod>
</file>
<file src="tests/unit/Controllers/Navigation/UpdateNavWidthConfigControllerTest.php">
<PossiblyUnusedMethod>
<code><![CDATA[invalidParamsProvider]]></code>
<code><![CDATA[validParamsProvider]]></code>
</PossiblyUnusedMethod>
</file>
<file src="tests/unit/Controllers/NavigationControllerTest.php">
<DeprecatedMethod>
<code><![CDATA[Config::getInstance()]]></code>

View File

@ -4,7 +4,7 @@ import { CommonParams } from '../common.ts';
export function setConfigValue (value: number): void {
$.ajax({
url: 'index.php?route=/config/set',
url: 'index.php?route=/navigation/update-width',
type: 'POST',
dataType: 'json',
data: {

View File

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Config;
namespace PhpMyAdmin\Controllers\Navigation;
use PhpMyAdmin\Config;
use PhpMyAdmin\Controllers\AbstractController;
@ -11,11 +11,12 @@ use PhpMyAdmin\Message;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Template;
use function __;
use function is_numeric;
final class SetConfigController extends AbstractController
final class UpdateNavWidthConfigController extends AbstractController
{
public function __construct(ResponseRenderer $response, Template $template, private Config $config)
public function __construct(ResponseRenderer $response, Template $template, private readonly Config $config)
{
parent::__construct($response, $template);
}
@ -25,13 +26,12 @@ final class SetConfigController extends AbstractController
$value = $request->getParsedBodyParam('value');
if (! is_numeric($value) || $value < 0) {
$this->response->setRequestStatus(false);
$this->response->addJSON(['message' => Message::error()]);
$this->response->addJSON(['message' => Message::error(__('Unexpected parameter value.'))]);
return;
}
$result = $this->config->setUserValue(null, 'NavigationWidth', (int) $value);
if ($result === true) {
return;
}

View File

@ -10,7 +10,6 @@ use PhpMyAdmin\Controllers\ChangeLogController;
use PhpMyAdmin\Controllers\CheckRelationsController;
use PhpMyAdmin\Controllers\CollationConnectionController;
use PhpMyAdmin\Controllers\ColumnController;
use PhpMyAdmin\Controllers\Config;
use PhpMyAdmin\Controllers\Console\Bookmark;
use PhpMyAdmin\Controllers\Console\UpdateConfigController;
use PhpMyAdmin\Controllers\Database;
@ -25,6 +24,7 @@ use PhpMyAdmin\Controllers\JavaScriptMessagesController;
use PhpMyAdmin\Controllers\LicenseController;
use PhpMyAdmin\Controllers\LintController;
use PhpMyAdmin\Controllers\LogoutController;
use PhpMyAdmin\Controllers\Navigation\UpdateNavWidthConfigController;
use PhpMyAdmin\Controllers\NavigationController;
use PhpMyAdmin\Controllers\Normalization;
use PhpMyAdmin\Controllers\Operations;
@ -54,9 +54,6 @@ final class Routes
$routes->addRoute(['GET', 'POST'], '/check-relations', CheckRelationsController::class);
$routes->post('/collation-connection', CollationConnectionController::class);
$routes->post('/columns', ColumnController::class);
$routes->addGroup('/config', static function (RouteCollector $routes): void {
$routes->post('/set', Config\SetConfigController::class);
});
$routes->addGroup('/console', static function (RouteCollector $routes): void {
$routes->addGroup('/bookmark', static function (RouteCollector $routes): void {
$routes->post('/add', Bookmark\AddController::class);
@ -142,7 +139,10 @@ final class Routes
$routes->addRoute(['GET', 'POST'], '/lint', LintController::class);
$routes->addRoute(['GET', 'POST'], '/logout', LogoutController::class);
$routes->get('/messages', JavaScriptMessagesController::class);
$routes->addRoute(['GET', 'POST'], '/navigation', NavigationController::class);
$routes->addGroup('/navigation', static function (RouteCollector $routes): void {
$routes->addRoute(['GET', 'POST'], '', NavigationController::class);
$routes->post('/update-width', UpdateNavWidthConfigController::class);
});
$routes->addGroup('/normalization', static function (RouteCollector $routes): void {
$routes->addRoute(['GET', 'POST'], '', Normalization\MainController::class);
$routes->post('/1nf/step1', Normalization\FirstNormalForm\FirstStepController::class);

View File

@ -0,0 +1,89 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Controllers\Navigation;
use PhpMyAdmin\Config;
use PhpMyAdmin\Controllers\Navigation\UpdateNavWidthConfigController;
use PhpMyAdmin\Http\Factory\ServerRequestFactory;
use PhpMyAdmin\Message;
use PhpMyAdmin\Template;
use PhpMyAdmin\Tests\AbstractTestCase;
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
#[CoversClass(UpdateNavWidthConfigController::class)]
final class UpdateNavWidthConfigControllerTest extends AbstractTestCase
{
#[DataProvider('validParamsProvider')]
public function testValidParam(string $value, int $expected): void
{
$request = ServerRequestFactory::create()->createServerRequest('POST', 'https://example.com/')
->withParsedBody(['value' => $value]);
$config = new Config();
$responseRenderer = new ResponseRenderer();
$controller = new UpdateNavWidthConfigController($responseRenderer, new Template($config), $config);
$controller($request);
self::assertSame($expected, $config->settings['NavigationWidth']);
self::assertSame([], $responseRenderer->getJSONResult());
self::assertTrue($responseRenderer->hasSuccessState(), 'Should be a successful response.');
}
/** @return iterable<array{string, int}> */
public static function validParamsProvider(): iterable
{
yield ['0', 0];
yield ['1', 1];
yield ['240', 240];
}
/** @param string|string[] $value */
#[DataProvider('invalidParamsProvider')]
public function testInvalidParams(array|string $value): void
{
$request = ServerRequestFactory::create()->createServerRequest('POST', 'https://example.com/')
->withParsedBody(['value' => $value]);
$config = new Config();
$responseRenderer = new ResponseRenderer();
$controller = new UpdateNavWidthConfigController($responseRenderer, new Template($config), $config);
$controller($request);
self::assertSame(
['message' => Message::error('Unexpected parameter value.')->getDisplay()],
$responseRenderer->getJSONResult(),
);
self::assertFalse($responseRenderer->hasSuccessState(), 'Should be a failed response.');
}
/** @return iterable<array{string|string[]}> */
public static function invalidParamsProvider(): iterable
{
yield [''];
yield ['invalid'];
yield [['invalid']];
yield ['-1'];
}
public function testFailedConfigSaving(): void
{
$request = ServerRequestFactory::create()->createServerRequest('POST', 'https://example.com/')
->withParsedBody(['value' => '240']);
$config = self::createStub(Config::class);
$config->method('setUserValue')->willReturn(Message::error('Could not save configuration'));
$responseRenderer = new ResponseRenderer();
$controller = new UpdateNavWidthConfigController($responseRenderer, new Template($config), $config);
$controller($request);
self::assertSame(
['message' => Message::error('Could not save configuration')->getDisplay()],
$responseRenderer->getJSONResult(),
);
self::assertFalse($responseRenderer->hasSuccessState(), 'Should be a failed response.');
}
}

View File

@ -12,7 +12,6 @@ use PhpMyAdmin\Controllers\ChangeLogController;
use PhpMyAdmin\Controllers\CheckRelationsController;
use PhpMyAdmin\Controllers\CollationConnectionController;
use PhpMyAdmin\Controllers\ColumnController;
use PhpMyAdmin\Controllers\Config;
use PhpMyAdmin\Controllers\Console\Bookmark;
use PhpMyAdmin\Controllers\Console\UpdateConfigController;
use PhpMyAdmin\Controllers\Database;
@ -28,6 +27,7 @@ use PhpMyAdmin\Controllers\JavaScriptMessagesController;
use PhpMyAdmin\Controllers\LicenseController;
use PhpMyAdmin\Controllers\LintController;
use PhpMyAdmin\Controllers\LogoutController;
use PhpMyAdmin\Controllers\Navigation\UpdateNavWidthConfigController;
use PhpMyAdmin\Controllers\NavigationController;
use PhpMyAdmin\Controllers\Normalization;
use PhpMyAdmin\Controllers\Operations;
@ -162,7 +162,6 @@ final class RoutesTest extends TestCase
'/check-relations' => CheckRelationsController::class,
'/collation-connection' => CollationConnectionController::class,
'/columns' => ColumnController::class,
'/config/set' => Config\SetConfigController::class,
'/console/bookmark/add' => Bookmark\AddController::class,
'/console/update-config' => UpdateConfigController::class,
'/database/central-columns' => Database\CentralColumnsController::class,
@ -214,6 +213,7 @@ final class RoutesTest extends TestCase
'/lint' => LintController::class,
'/logout' => LogoutController::class,
'/navigation' => NavigationController::class,
'/navigation/update-width' => UpdateNavWidthConfigController::class,
'/normalization' => Normalization\MainController::class,
'/normalization/1nf/step1' => Normalization\FirstNormalForm\FirstStepController::class,
'/normalization/1nf/step2' => Normalization\FirstNormalForm\SecondStepController::class,