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
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Plugins\Import;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\File;
use PhpMyAdmin\Plugins\Import\ImportMediawiki;
use PhpMyAdmin\Tests\AbstractTestCase;
use function __;
/**
* @covers \PhpMyAdmin\Plugins\Import\ImportMediawiki
*/
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\Plugins\Import\ImportMediawiki::class)]
class ImportMediawikiTest extends AbstractTestCase
{
/** @var ImportMediawiki */
protected $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();
$GLOBALS['server'] = 0;
$GLOBALS['plugin_param'] = 'database';
$this->object = new ImportMediawiki();
//setting
$GLOBALS['finished'] = false;
$GLOBALS['read_limit'] = 100000000;
$GLOBALS['offset'] = 0;
$GLOBALS['cfg']['Server']['DisableIS'] = false;
$GLOBALS['import_file'] = 'test/test_data/phpmyadmin.mediawiki';
$GLOBALS['import_text'] = 'ImportMediawiki_Test';
$GLOBALS['read_multiply'] = 10;
$GLOBALS['import_type'] = 'Mediawiki';
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown(): void
{
parent::tearDown();
unset($this->object);
}
/**
* Test for getProperties
*
* @group medium
*/
#[\PHPUnit\Framework\Attributes\Group('medium-group')]
public function testGetProperties(): void
{
$properties = $this->object->getProperties();
self::assertSame(__('MediaWiki Table'), $properties->getText());
self::assertSame('txt', $properties->getExtension());
self::assertSame('text/plain', $properties->getMimeType());
self::assertNull($properties->getOptions());
self::assertSame(__('Options'), $properties->getOptionsText());
}
/**
* Test for doImport
*
* @group medium
*/
#[\PHPUnit\Framework\Attributes\Group('medium-group')]
public function testDoImport(): void
{
//$import_notice will show the import detail result
global $import_notice;
//Mock DBI
$dbi = $this->getMockBuilder(DatabaseInterface::class)
->disableOriginalConstructor()
->getMock();
$GLOBALS['dbi'] = $dbi;
$importHandle = new File($GLOBALS['import_file']);
$importHandle->open();
//Test function called
$this->object->doImport($importHandle);
// If import successfully, PMA will show all databases and
// tables imported as following HTML Page
/*
The following structures have either been created or altered. Here you
can:
View a structure's contents by clicking on its name
Change any of its settings by clicking the corresponding "Options" link
Edit structure by following the "Structure" link
mediawiki_DB (Options)
pma_bookmarktest (Structure) (Options)
*/
//asset that all databases and tables are imported
self::assertStringContainsString(
'The following structures have either been created or altered.',
$import_notice
);
self::assertStringContainsString('Go to database: `mediawiki_DB`', $import_notice);
self::assertStringContainsString('Edit settings for `mediawiki_DB`', $import_notice);
self::assertStringContainsString('Go to table: `pma_bookmarktest`', $import_notice);
self::assertStringContainsString('Edit settings for `pma_bookmarktest`', $import_notice);
self::assertTrue($GLOBALS['finished']);
}
/**
* Test for doImport
*
* @group medium
*/
#[\PHPUnit\Framework\Attributes\Group('medium-group')]
public function testDoImportWithEmptyTable(): void
{
//$import_notice will show the import detail result
global $import_notice;
//Mock DBI
$dbi = $this->getMockBuilder(DatabaseInterface::class)
->disableOriginalConstructor()
->getMock();
$GLOBALS['dbi'] = $dbi;
$importHandle = new File('test/test_data/__slashes.mediawiki');
$importHandle->open();
//Test function called
$this->object->doImport($importHandle);
// If import successfully, PMA will show all databases and
// tables imported as following HTML Page
/*
The following structures have either been created or altered. Here you
can:
View a structure's contents by clicking on its name
Change any of its settings by clicking the corresponding "Options" link
Edit structure by following the "Structure" link
mediawiki_DB (Options)
pma_bookmarktest (Structure) (Options)
*/
//asset that all databases and tables are imported
self::assertStringContainsString(
'The following structures have either been created or altered.',
$import_notice
);
self::assertStringContainsString('Go to database: `mediawiki_DB`', $import_notice);
self::assertStringContainsString('Edit settings for `mediawiki_DB`', $import_notice);
self::assertStringContainsString('Go to table: `empty`', $import_notice);
self::assertStringContainsString('Edit settings for `empty`', $import_notice);
self::assertTrue($GLOBALS['finished']);
}
}
|