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 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use PhpMyAdmin\Template;
use PhpMyAdmin\Twig\Extensions\Node\TransNode;
use Twig\Error\LoaderError;
/**
* @covers \PhpMyAdmin\Template
*/
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\Template::class)]
class TemplateTest extends AbstractTestCase
{
/** @var Template */
protected $template;
/**
* Sets up the fixture.
*/
protected function setUp(): void
{
parent::setUp();
$this->template = new Template();
}
/**
* Test that Twig Environment can be built
* and that all Twig extensions are loaded
*/
public function testGetTwigEnvironment(): void
{
global $cfg;
$this->loadContainerBuilder();
$cfg['environment'] = 'production';
$twig = Template::getTwigEnvironment(null);
self::assertFalse($twig->isDebug());
self::assertFalse(TransNode::$enableAddDebugInfo);
$cfg['environment'] = 'development';
$twig = Template::getTwigEnvironment(null);
self::assertTrue($twig->isDebug());
self::assertTrue(TransNode::$enableAddDebugInfo);
}
/**
* Test for set function
*
* @param string $data Template name
*
* @dataProvider providerTestSet
*/
#[\PHPUnit\Framework\Attributes\DataProvider('providerTestSet')]
public function testSet(string $data): void
{
$result = $this->template->render($data, [
'variable1' => 'value1',
'variable2' => 'value2',
]);
self::assertStringContainsString('value1', $result);
self::assertStringContainsString('value2', $result);
}
/**
* Data provider for testSet
*
* @return array
*/
public static function providerTestSet(): array
{
return [
['test/add_data'],
];
}
/**
* Test for render
*
* @param string $templateFile Template name
* @param string $key Template variable array key
* @param string $value Template variable array value
*
* @dataProvider providerTestDynamicRender
*/
#[\PHPUnit\Framework\Attributes\DataProvider('providerTestDynamicRender')]
public function testDynamicRender(string $templateFile, string $key, string $value): void
{
self::assertSame($value, $this->template->render($templateFile, [$key => $value]));
}
/**
* Data provider for testDynamicRender
*
* @return array
*/
public static function providerTestDynamicRender(): array
{
return [
[
'test/echo',
'variable',
'value',
],
];
}
/**
* Test for render
*/
public function testRenderTemplateNotFound(): void
{
$this->expectException(LoaderError::class);
$this->template->render('template not found');
}
/**
* Test for render
*
* @param string $templateFile Template name
* @param string $expectedResult Expected result
*
* @dataProvider providerTestRender
*/
#[\PHPUnit\Framework\Attributes\DataProvider('providerTestRender')]
public function testRender(string $templateFile, string $expectedResult): void
{
self::assertSame($expectedResult, $this->template->render($templateFile));
}
/**
* Data provider for testSet
*
* @return array
*/
public static function providerTestRender(): array
{
return [
[
'test/static',
'static content',
],
];
}
/**
* Test for render
*
* @param string $templateFile Template name
* @param array $renderParams Render params
* @param string $expectedResult Expected result
*
* @dataProvider providerTestRenderGettext
*/
#[\PHPUnit\Framework\Attributes\DataProvider('providerTestRenderGettext')]
public function testRenderGettext(string $templateFile, array $renderParams, string $expectedResult): void
{
self::assertSame($expectedResult, $this->template->render($templateFile, $renderParams));
}
/**
* Data provider for testRenderGettext
*
* @return array
*/
public static function providerTestRenderGettext(): array
{
return [
[
'test/gettext/gettext',
[],
'Text',
],
[
'test/gettext/pgettext',
[],
'Text',
],
[
'test/gettext/notes',
[],
'Text',
],
[
'test/gettext/plural',
['table_count' => 1],
'One table',
],
[
'test/gettext/plural',
['table_count' => 2],
'2 tables',
],
[
'test/gettext/plural_notes',
['table_count' => 1],
'One table',
],
[
'test/gettext/plural_notes',
['table_count' => 2],
'2 tables',
],
];
}
}
|