phpmyadmin/tests/unit/Config/Forms/User/NaviFormTest.php
Maurício Meneghini Fauth 166b0ab4c0
Add unit tests for Config\Forms classes
Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
2025-09-08 16:33:22 -03:00

149 lines
5.9 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms\User;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Form;
use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\User\NaviForm;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(NaviForm::class)]
#[CoversClass(BaseForm::class)]
#[CoversClass(FormDisplay::class)]
#[CoversClass(Form::class)]
final class NaviFormTest extends AbstractTestCase
{
public function testRegisteredForms(): void
{
Form::resetGroupCounter();
$naviForm = new NaviForm(new ConfigFile([]), 1);
self::assertSame('Navigation panel', NaviForm::getName());
$forms = $naviForm->getRegisteredForms();
self::assertCount(5, $forms);
self::assertArrayHasKey('Navi_panel', $forms);
$form = $forms['Navi_panel'];
self::assertSame('Navi_panel', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'ShowDatabasesNavigationAsTree' => 'ShowDatabasesNavigationAsTree',
'NavigationLinkWithMainPanel' => 'NavigationLinkWithMainPanel',
'NavigationDisplayLogo' => 'NavigationDisplayLogo',
'NavigationLogoLink' => 'NavigationLogoLink',
'NavigationLogoLinkWindow' => 'NavigationLogoLinkWindow',
'NavigationTreePointerEnable' => 'NavigationTreePointerEnable',
'FirstLevelNavigationItems' => 'FirstLevelNavigationItems',
'NavigationTreeDisplayItemFilterMinimum' => 'NavigationTreeDisplayItemFilterMinimum',
'NumRecentTables' => 'NumRecentTables',
'NumFavoriteTables' => 'NumFavoriteTables',
'NavigationWidth' => 'NavigationWidth',
],
$form->fields,
);
self::assertArrayHasKey('Navi_tree', $forms);
$form = $forms['Navi_tree'];
self::assertSame('Navi_tree', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'MaxNavigationItems' => 'MaxNavigationItems',
'NavigationTreeEnableGrouping' => 'NavigationTreeEnableGrouping',
'NavigationTreeEnableExpansion' => 'NavigationTreeEnableExpansion',
'NavigationTreeShowTables' => 'NavigationTreeShowTables',
'NavigationTreeShowViews' => 'NavigationTreeShowViews',
'NavigationTreeShowFunctions' => 'NavigationTreeShowFunctions',
'NavigationTreeShowProcedures' => 'NavigationTreeShowProcedures',
'NavigationTreeShowEvents' => 'NavigationTreeShowEvents',
'NavigationTreeAutoexpandSingleDb' => 'NavigationTreeAutoexpandSingleDb',
],
$form->fields,
);
self::assertArrayHasKey('Navi_servers', $forms);
$form = $forms['Navi_servers'];
self::assertSame('Navi_servers', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
['NavigationDisplayServers' => 'NavigationDisplayServers', 'DisplayServersList' => 'DisplayServersList'],
$form->fields,
);
self::assertArrayHasKey('Navi_databases', $forms);
$form = $forms['Navi_databases'];
self::assertSame('Navi_databases', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'NavigationTreeDisplayDbFilterMinimum' => 'NavigationTreeDisplayDbFilterMinimum',
'NavigationTreeDbSeparator' => 'NavigationTreeDbSeparator',
],
$form->fields,
);
self::assertArrayHasKey('Navi_tables', $forms);
$form = $forms['Navi_tables'];
self::assertSame('Navi_tables', $form->name);
self::assertSame(1, $form->index);
self::assertSame([], $form->default);
self::assertSame(
[
'NavigationTreeDefaultTabTable' => 'NavigationTreeDefaultTabTable',
'NavigationTreeDefaultTabTable2' => 'NavigationTreeDefaultTabTable2',
'NavigationTreeTableSeparator' => 'NavigationTreeTableSeparator',
'NavigationTreeTableLevel' => 'NavigationTreeTableLevel',
],
$form->fields,
);
}
public function testGetFields(): void
{
self::assertSame(
[
'ShowDatabasesNavigationAsTree',
'NavigationLinkWithMainPanel',
'NavigationDisplayLogo',
'NavigationLogoLink',
'NavigationLogoLinkWindow',
'NavigationTreePointerEnable',
'FirstLevelNavigationItems',
'NavigationTreeDisplayItemFilterMinimum',
'NumRecentTables',
'NumFavoriteTables',
'NavigationWidth',
'MaxNavigationItems',
'NavigationTreeEnableGrouping',
'NavigationTreeEnableExpansion',
'NavigationTreeShowTables',
'NavigationTreeShowViews',
'NavigationTreeShowFunctions',
'NavigationTreeShowProcedures',
'NavigationTreeShowEvents',
'NavigationTreeAutoexpandSingleDb',
'NavigationDisplayServers',
'DisplayServersList',
'NavigationTreeDisplayDbFilterMinimum',
'NavigationTreeDbSeparator',
'NavigationTreeDefaultTabTable',
'NavigationTreeDefaultTabTable2',
'NavigationTreeTableSeparator',
'NavigationTreeTableLevel',
],
NaviForm::getFields(),
);
}
}