3 declare(strict_types
=1);
5 namespace PhpMyAdmin\Tests
;
7 use PhpMyAdmin\Scripts
;
8 use PhpMyAdmin\Template
;
9 use PhpMyAdmin\Version
;
10 use PHPUnit\Framework\Attributes\CoversClass
;
11 use ReflectionProperty
;
13 use function rawurlencode
;
15 #[CoversClass(Scripts::class)]
16 class ScriptsTest
extends AbstractTestCase
18 protected Scripts
$object;
21 * Sets up the fixture, for example, opens a network connection.
22 * This method is called before a test is executed.
24 protected function setUp(): void
28 $this->object = new Scripts(new Template());
32 * Tears down the fixture, for example, closes a network connection.
33 * This method is called after a test is executed.
35 protected function tearDown(): void
45 public function testGetDisplay(): void
47 $this->object->addFile('vendor/codemirror/lib/codemirror.js');
48 $this->object->addFile('index.php', ['route' => '/messages', 'l' => 'en']);
49 $this->object->addFile('common.js');
51 $actual = $this->object->getDisplay();
53 self
::assertStringContainsString(
54 'src="js/dist/common.js?v=' . rawurlencode(Version
::VERSION
) . '"',
57 self
::assertStringContainsString(
58 'src="index.php?route=%2Fmessages&l=en&v=' . rawurlencode(Version
::VERSION
) . '&lang=en"',
61 self
::assertStringContainsString(
62 'window.AJAX.scriptHandler.add(\'vendor\/codemirror\/lib\/codemirror.js\', false);',
65 self
::assertStringContainsString('window.AJAX.scriptHandler.add(\'common.js\', true);', $actual);
66 self
::assertStringContainsString('window.AJAX.fireOnload(\'common.js\')', $actual);
67 self
::assertStringNotContainsString(
68 'window.AJAX.fireOnload(\'vendor\/codemirror\/lib\/codemirror.js\')',
76 public function testAddCode(): void
78 $this->object->addCode('alert(\'CodeAdded\');');
80 $actual = $this->object->getDisplay();
82 self
::assertStringContainsString('alert(\'CodeAdded\');', $actual);
88 public function testGetFiles(): void
90 // codemirror's onload event is excluded
91 $this->object->addFile('vendor/codemirror/lib/codemirror.js');
93 $this->object->addFile('common.js');
95 [['name' => 'vendor/codemirror/lib/codemirror.js', 'fire' => 0], ['name' => 'common.js', 'fire' => 1]],
96 $this->object->getFiles(),
103 public function testAddFile(): void
105 $reflection = new ReflectionProperty(Scripts
::class, 'files');
107 // Assert empty _files property of
109 self
::assertSame([], $reflection->getValue($this->object));
111 // Add one script file
113 $hash = 'd7716810d825f4b55d18727c3ccb24e6';
114 $files = [$hash => ['has_onload' => 1, 'filename' => 'common.js', 'params' => []]];
115 $this->object->addFile($file);
116 self
::assertSame($files, $reflection->getValue($this->object));
122 public function testAddFiles(): void
124 $reflection = new ReflectionProperty(Scripts
::class, 'files');
126 $filenames = ['common.js', 'sql.js', 'common.js'];
128 'd7716810d825f4b55d18727c3ccb24e6' => ['has_onload' => 1, 'filename' => 'common.js', 'params' => []],
129 '347a57484fcd6ea6d8a125e6e1d31f78' => ['has_onload' => 1, 'filename' => 'sql.js', 'params' => []],
131 $this->object->addFiles($filenames);
132 self
::assertSame($files, $reflection->getValue($this->object));