-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Expand file tree
/
Copy pathScriptsTest.php
More file actions
124 lines (104 loc) · 3.7 KB
/
ScriptsTest.php
File metadata and controls
124 lines (104 loc) · 3.7 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use PhpMyAdmin\Config;
use PhpMyAdmin\Scripts;
use PhpMyAdmin\Template;
use PhpMyAdmin\Version;
use PHPUnit\Framework\Attributes\CoversClass;
use ReflectionProperty;
use function rawurlencode;
#[CoversClass(Scripts::class)]
class ScriptsTest extends AbstractTestCase
{
protected Scripts $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp(): void
{
parent::setUp();
$this->object = new Scripts(new Template(new Config()));
}
/**
* Test for getDisplay
*/
public function testGetDisplay(): void
{
$this->object->addFile('vendor/codemirror/lib/codemirror.js');
$this->object->addFile('index.php', ['route' => '/messages', 'l' => 'en']);
$this->object->addFile('common.js');
$actual = $this->object->getDisplay();
self::assertStringContainsString(
'src="js/common.js?v=' . rawurlencode(Version::VERSION) . '"',
$actual,
);
self::assertStringContainsString(
'src="index.php?route=%2Fmessages&l=en&v=' . rawurlencode(Version::VERSION) . '&lang=en"',
$actual,
);
self::assertStringContainsString(
'window.AJAX.scriptHandler.add(\'vendor\/codemirror\/lib\/codemirror.js\', false);',
$actual,
);
self::assertStringContainsString('window.AJAX.scriptHandler.add(\'common.js\', true);', $actual);
self::assertStringContainsString('window.AJAX.fireOnload(\'common.js\')', $actual);
self::assertStringNotContainsString(
'window.AJAX.fireOnload(\'vendor\/codemirror\/lib\/codemirror.js\')',
$actual,
);
}
/**
* test for addCode
*/
public function testAddCode(): void
{
$this->object->addCode('alert(\'CodeAdded\');');
$actual = $this->object->getDisplay();
self::assertStringContainsString('alert(\'CodeAdded\');', $actual);
}
/**
* test for getFiles
*/
public function testGetFiles(): void
{
// codemirror's onload event is excluded
$this->object->addFile('vendor/codemirror/lib/codemirror.js');
$this->object->addFile('common.js');
self::assertSame(
[['name' => 'vendor/codemirror/lib/codemirror.js', 'fire' => 0], ['name' => 'common.js', 'fire' => 1]],
$this->object->getFiles(),
);
}
/**
* test for addFile
*/
public function testAddFile(): void
{
$reflection = new ReflectionProperty(Scripts::class, 'files');
// Assert empty _files property of
// Scripts
self::assertSame([], $reflection->getValue($this->object));
// Add one script file
$file = 'common.js';
$hash = 'd7716810d825f4b55d18727c3ccb24e6';
$files = [$hash => ['has_onload' => 1, 'filename' => 'common.js', 'params' => []]];
$this->object->addFile($file);
self::assertSame($files, $reflection->getValue($this->object));
}
/**
* test for addFiles
*/
public function testAddFiles(): void
{
$reflection = new ReflectionProperty(Scripts::class, 'files');
$filenames = ['common.js', 'sql.js', 'common.js'];
$files = [
'd7716810d825f4b55d18727c3ccb24e6' => ['has_onload' => 1, 'filename' => 'common.js', 'params' => []],
'347a57484fcd6ea6d8a125e6e1d31f78' => ['has_onload' => 1, 'filename' => 'sql.js', 'params' => []],
];
$this->object->addFiles($filenames);
self::assertSame($files, $reflection->getValue($this->object));
}
}