phpmyadmin/tests/unit/Config/Forms/FormListTest.php
Kamil Tekiela 82c85d26c0
Clean up of tests (#19067)
* Fix wrong type hint

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Use $this instead of parent

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* setUp should be a protected method

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* onNotSuccessfulTest should be protected

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* $command doesn't need to be a property

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Give alertText() proper return type

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Use null-safe operator

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Call Message static constructors statically

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Call StorageEngine methods statically

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Add better type hints in PrivilegesController

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Use packed (without keys) arrays in tests

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Use type casts instead of function casts

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Use const instead of private property

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Use const instead of private property

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Fix testAuthFailsTooLongPass()

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Replace loop with array_shift

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Use ob_get_clean

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Remove duplicated code

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

* Use assert instead of phpdoc

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>

---------

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
2024-03-20 13:34:55 -03:00

77 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Config\Forms;
use PhpMyAdmin\Config;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\BaseFormList;
use PhpMyAdmin\Config\Forms\Page;
use PhpMyAdmin\Config\Forms\Page\PageFormList;
use PhpMyAdmin\Config\Forms\Setup;
use PhpMyAdmin\Config\Forms\Setup\SetupFormList;
use PhpMyAdmin\Config\Forms\User;
use PhpMyAdmin\Config\Forms\User\UserFormList;
use PhpMyAdmin\Tests\AbstractTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
#[CoversClass(BaseFormList::class)]
#[CoversClass(PageFormList::class)]
#[CoversClass(SetupFormList::class)]
#[CoversClass(UserFormList::class)]
class FormListTest extends AbstractTestCase
{
protected function setUp(): void
{
parent::setUp();
$this->setGlobalConfig();
}
/**
* Tests for preferences forms.
*
* @param string $class Class to test
* @param string $prefix Returned class prefix
* @psalm-param class-string<BaseFormList> $class
* @psalm-param class-string<BaseForm> $prefix
*/
#[DataProvider('formObjects')]
public function testForms(string $class, string $prefix): void
{
$cf = new ConfigFile(Config::getInstance()->baseSettings);
/* Static API */
self::assertTrue($class::isValid('Export'));
self::assertSame($prefix, $class::get('Export'));
foreach ($class::getAllFormNames() as $form) {
$formClass = $class::get($form);
self::assertNotNull($formClass);
self::assertNotNull($formClass::getName());
}
self::assertContains('Export/texytext_columns', $class::getFields());
/* Instance handling */
$forms = new $class($cf);
self::assertInstanceOf(BaseFormList::class, $forms);
self::assertFalse($forms->process());
$forms->fixErrors();
self::assertFalse($forms->hasErrors());
self::assertSame('', $forms->displayErrors());
}
/** @psalm-return array<array{class-string<BaseFormList>, class-string<BaseForm>}> */
public static function formObjects(): array
{
return [
[User\UserFormList::class, User\ExportForm::class],
[Page\PageFormList::class, Page\ExportForm::class],
[Setup\SetupFormList::class, Setup\ExportForm::class],
];
}
}