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
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Plugins\Export;
use PhpMyAdmin\Plugins\Export\ExportExcel;
use PhpMyAdmin\Properties\Options\Groups\OptionsPropertyMainGroup;
use PhpMyAdmin\Properties\Options\Groups\OptionsPropertyRootGroup;
use PhpMyAdmin\Properties\Options\Items\BoolPropertyItem;
use PhpMyAdmin\Properties\Options\Items\HiddenPropertyItem;
use PhpMyAdmin\Properties\Options\Items\SelectPropertyItem;
use PhpMyAdmin\Properties\Options\Items\TextPropertyItem;
use PhpMyAdmin\Properties\Plugins\ExportPluginProperties;
use PhpMyAdmin\Tests\AbstractTestCase;
use ReflectionMethod;
use ReflectionProperty;
use function array_shift;
/**
* @covers \PhpMyAdmin\Plugins\Export\ExportExcel
* @group medium
*/
#[\PHPUnit\Framework\Attributes\Group('medium-group')]
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\Plugins\Export\ExportExcel::class)]
class ExportExcelTest extends AbstractTestCase
{
/** @var ExportExcel */
protected $object;
/**
* Configures global environment.
*/
protected function setUp(): void
{
parent::setUp();
$GLOBALS['server'] = 0;
$this->object = new ExportExcel();
}
/**
* tearDown for test cases
*/
protected function tearDown(): void
{
parent::tearDown();
unset($this->object);
}
public function testSetProperties(): void
{
$method = new ReflectionMethod(ExportExcel::class, 'setProperties');
$method->setAccessible(true);
$method->invoke($this->object, null);
$attrProperties = new ReflectionProperty(ExportExcel::class, 'properties');
$attrProperties->setAccessible(true);
$properties = $attrProperties->getValue($this->object);
self::assertInstanceOf(ExportPluginProperties::class, $properties);
self::assertSame('CSV for MS Excel', $properties->getText());
self::assertSame('csv', $properties->getExtension());
self::assertSame('text/comma-separated-values', $properties->getMimeType());
self::assertSame('Options', $properties->getOptionsText());
$options = $properties->getOptions();
self::assertInstanceOf(OptionsPropertyRootGroup::class, $options);
self::assertSame('Format Specific Options', $options->getName());
$generalOptionsArray = $options->getProperties();
$generalOptions = $generalOptionsArray[0];
self::assertInstanceOf(OptionsPropertyMainGroup::class, $generalOptions);
self::assertSame('general_opts', $generalOptions->getName());
$generalProperties = $generalOptions->getProperties();
$property = array_shift($generalProperties);
self::assertInstanceOf(TextPropertyItem::class, $property);
self::assertSame('null', $property->getName());
self::assertSame('Replace NULL with:', $property->getText());
$property = array_shift($generalProperties);
self::assertInstanceOf(BoolPropertyItem::class, $property);
self::assertSame('removeCRLF', $property->getName());
self::assertSame('Remove carriage return/line feed characters within columns', $property->getText());
$property = array_shift($generalProperties);
self::assertInstanceOf(BoolPropertyItem::class, $property);
self::assertSame('columns', $property->getName());
self::assertSame('Put columns names in the first row', $property->getText());
$property = array_shift($generalProperties);
self::assertInstanceOf(SelectPropertyItem::class, $property);
self::assertSame('edition', $property->getName());
self::assertSame([
'win' => 'Windows',
'mac_excel2003' => 'Excel 2003 / Macintosh',
'mac_excel2008' => 'Excel 2008 / Macintosh',
], $property->getValues());
self::assertSame('Excel edition:', $property->getText());
$property = array_shift($generalProperties);
self::assertInstanceOf(HiddenPropertyItem::class, $property);
self::assertSame('structure_or_data', $property->getName());
}
}
|