Translated using Weblate (Portuguese)
[phpmyadmin.git] / tests / unit / ScriptsTest.php
blobcc462f8c8b2e949cc726ce92f69820b4bbff8797
1 <?php
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;
20 /**
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
26 parent::setUp();
28 $this->object = new Scripts(new Template());
31 /**
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
37 parent::tearDown();
39 unset($this->object);
42 /**
43 * Test for getDisplay
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) . '"',
55 $actual,
57 self::assertStringContainsString(
58 'src="index.php?route=%2Fmessages&l=en&v=' . rawurlencode(Version::VERSION) . '&lang=en"',
59 $actual,
61 self::assertStringContainsString(
62 'window.AJAX.scriptHandler.add(\'vendor\/codemirror\/lib\/codemirror.js\', false);',
63 $actual,
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\')',
69 $actual,
73 /**
74 * test for addCode
76 public function testAddCode(): void
78 $this->object->addCode('alert(\'CodeAdded\');');
80 $actual = $this->object->getDisplay();
82 self::assertStringContainsString('alert(\'CodeAdded\');', $actual);
85 /**
86 * test for getFiles
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');
94 self::assertSame(
95 [['name' => 'vendor/codemirror/lib/codemirror.js', 'fire' => 0], ['name' => 'common.js', 'fire' => 1]],
96 $this->object->getFiles(),
101 * test for addFile
103 public function testAddFile(): void
105 $reflection = new ReflectionProperty(Scripts::class, 'files');
107 // Assert empty _files property of
108 // Scripts
109 self::assertSame([], $reflection->getValue($this->object));
111 // Add one script file
112 $file = 'common.js';
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));
120 * test for addFiles
122 public function testAddFiles(): void
124 $reflection = new ReflectionProperty(Scripts::class, 'files');
126 $filenames = ['common.js', 'sql.js', 'common.js'];
127 $files = [
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));