dummyDbi = $this->createDbiDummy();
$this->dbi = $this->createDatabaseInterface($this->dummyDbi);
DatabaseInterface::$instance = $this->dbi;
$config = Config::getInstance();
$config->settings['LimitChars'] = 50;
$config->settings['ShowHint'] = true;
$config->settings['ActionLinksMode'] = 'icons';
Current::$database = 'PMA_db';
Current::$table = 'PMA_table';
$config->selectedServer['DisableIS'] = false;
$_POST['change_column'] = null;
//$_SESSION
//mock DBI
$dbi = $this->getMockBuilder(DatabaseInterface::class)
->disableOriginalConstructor()
->getMock();
$dbi->types = new Types($dbi);
DatabaseInterface::$instance = $dbi;
// set expectations
$dbi->expects(self::any())
->method('selectDb')
->willReturn(true);
$dbi->expects(self::any())
->method('getColumns')
->willReturn([
'id' => new Column('id', 'integer', null, false, '', null, '', '', ''),
'col1' => new Column('col1', 'varchar(100)', null, false, '', null, '', '', ''),
'col2' => new Column('col2', 'DATETIME', null, false, '', null, '', '', ''),
]);
$dbi->expects(self::any())
->method('getColumnNames')
->willReturn(['id', 'col1', 'col2']);
$map = [
['PMA_db', 'PMA_table1', ConnectionType::User, []],
['PMA_db', 'PMA_table', ConnectionType::User, [['Key_name' => 'PRIMARY', 'Column_name' => 'id']]],
[
'PMA_db',
'PMA_table2',
ConnectionType::User,
[['Key_name' => 'PRIMARY','Column_name' => 'id'], ['Key_name' => 'PRIMARY','Column_name' => 'col1']],
],
];
$dbi->expects(self::any())
->method('getTableIndexes')
->willReturnMap($map);
$dbi->expects(self::any())
->method('tryQuery')
->willReturn(self::createStub(DummyResult::class));
$dbi->expects(self::any())
->method('fetchSingleRow')
->willReturn(['`id`_cnt' => 0, '`col1`_cnt' => 0, '`col2`_cnt' => 0]);
$relation = new Relation($dbi);
$this->normalization = new Normalization(
$dbi,
$relation,
new Transformations($dbi, $relation),
new Template($config),
);
}
/**
* Test for getHtmlForColumnsList
*/
public function testGetHtmlForColumnsList(): void
{
$db = 'PMA_db';
$table = 'PMA_table';
self::assertStringContainsString(
'',
$this->normalization->getHtmlForColumnsList($table, $db),
);
self::assertSame(
'col1 [ varchar(100) ]
',
$this->normalization->getHtmlForColumnsList($table, $db, 'String', 'checkbox'),
);
}
/**
* Test for getHtmlForCreateNewColumn
*/
public function testGetHtmlForCreateNewColumn(): void
{
$config = Config::getInstance();
$userPrivileges = new UserPrivileges();
$config->selectedServer['DisableIS'] = false;
DatabaseInterface::$instance = $this->dbi;
$db = 'testdb';
$table = 'mytable';
$numFields = 1;
$relation = new Relation($this->dbi);
$normalization = new Normalization(
$this->dbi,
$relation,
new Transformations($this->dbi, $relation),
new Template($config),
);
$result = $normalization->getHtmlForCreateNewColumn($userPrivileges, $numFields, $db, $table);
self::assertStringContainsString('