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:
parent
6482dfa28b
commit
adc834f1ae
@ -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 => [
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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.');
|
||||
}
|
||||
}
|
||||
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user