File: FormListTest.php

package info (click to toggle)
phpmyadmin 4%3A5.2.2-really%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 140,312 kB
  • sloc: javascript: 228,447; php: 166,904; xml: 17,847; sql: 504; sh: 275; makefile: 209; python: 205
file content (81 lines) | stat: -rw-r--r-- 2,769 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php

declare(strict_types=1);

namespace PhpMyAdmin\Tests\Config\Forms;

use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\BaseFormList;
use PhpMyAdmin\Config\Forms\Page;
use PhpMyAdmin\Config\Forms\Setup;
use PhpMyAdmin\Config\Forms\User;
use PhpMyAdmin\Tests\AbstractTestCase;

/**
 * @covers \PhpMyAdmin\Config\Forms\BaseFormList
 * @covers \PhpMyAdmin\Config\Forms\Page\PageFormList
 * @covers \PhpMyAdmin\Config\Forms\Setup\SetupFormList
 * @covers \PhpMyAdmin\Config\Forms\User\UserFormList
 */
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\Config\Forms\BaseFormList::class)]
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\Config\Forms\Page\PageFormList::class)]
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\Config\Forms\Setup\SetupFormList::class)]
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\Config\Forms\User\UserFormList::class)]
class FormListTest extends AbstractTestCase
{
    protected function setUp(): void
    {
        parent::setUp();
        parent::setGlobalConfig();
        $GLOBALS['server'] = 1;
    }

    /**
     * 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
     */
    #[\PHPUnit\Framework\Attributes\DataProvider('formObjects')]
    public function testForms(string $class, string $prefix): void
    {
        $cf = new ConfigFile($GLOBALS['config']->baseSettings);

        /* Static API */
        self::assertTrue($class::isValid('Export'));
        self::assertSame($prefix, $class::get('Export'));
        foreach ($class::getAll() as $form) {
            $form_class = $class::get($form);
            self::assertNotNull($form_class);
            self::assertNotNull($form_class::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());
    }

    /**
     * @return string[][]
     * @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],
        ];
    }
}