phpmyadmin/test/classes/ScriptsTest.php
Maurício Meneghini Fauth 33d711215d
Remove the PMA_VERSION constant
Uses the PhpMyAdmin\Version::VERSION constant instead.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2021-03-08 22:22:55 -03:00

172 lines
4.0 KiB
PHP

<?php
/**
* Tests for Script.php
*/
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use PhpMyAdmin\Scripts;
use PhpMyAdmin\Version;
use ReflectionProperty;
use function define;
use function defined;
use function rawurlencode;
/**
* Tests for Script.php
*/
class ScriptsTest extends AbstractTestCase
{
/** @var Scripts */
protected $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*
* @access protected
*/
protected function setUp(): void
{
parent::setUp();
$this->object = new Scripts();
if (defined('PMA_USR_BROWSER_AGENT')) {
return;
}
define('PMA_USR_BROWSER_AGENT', 'MOZILLA');
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*
* @access protected
*/
protected function tearDown(): void
{
parent::tearDown();
unset($this->object);
}
/**
* Test for getDisplay
*/
public function testGetDisplay(): void
{
$this->object->addFile('common.js');
$actual = $this->object->getDisplay();
$this->assertStringContainsString(
'src="js/dist/common.js?v=' . rawurlencode(Version::VERSION) . '"',
$actual
);
$this->assertStringContainsString(
'.add(\'common.js\', 1)',
$actual
);
$this->assertStringContainsString(
'AJAX.fireOnload(\'common.js\')',
$actual
);
}
/**
* test for addCode
*/
public function testAddCode(): void
{
$this->object->addCode('alert(\'CodeAdded\');');
$actual = $this->object->getDisplay();
$this->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');
$this->assertEquals(
[
[
'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');
$reflection->setAccessible(true);
// Assert empty _files property of
// Scripts
$this->assertEquals([], $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);
$this->assertEquals($_files, $reflection->getValue($this->object));
}
/**
* test for addFiles
*/
public function testAddFiles(): void
{
$reflection = new ReflectionProperty(Scripts::class, 'files');
$reflection->setAccessible(true);
$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);
$this->assertEquals($_files, $reflection->getValue($this->object));
}
}