selectedServer['pmadb'] = ''; $resultStub = self::createMock(DummyResult::class); $dbi = $this->getMockBuilder(DatabaseInterface::class) ->disableOriginalConstructor() ->getMock(); $dbi->expects(self::any()) ->method('tryQuery') ->willReturn($resultStub); $dbi->expects(self::any()) ->method('quoteString') ->willReturnCallback(static fn (string $string): string => "'" . $string . "'"); $relationParameters = RelationParameters::fromArray([ 'table_coords' => 'table_name', 'displaywork' => true, 'db' => 'information_schema', 'table_info' => 'table_info', 'relwork' => true, 'commwork' => true, 'pdfwork' => true, 'mimework' => true, 'column_info' => 'column_info', 'relation' => 'relation', ]); (new ReflectionProperty(Relation::class, 'cache'))->setValue(null, $relationParameters); $this->sysDb = new SystemDatabase($dbi); } /** * Tests for PMA_getExistingTransformationData() method. */ public function testPMAGetExistingTransformationData(): void { $db = 'PMA_db'; $ret = $this->sysDb->getExistingTransformationData($db); //validate that is the same as $dbi->tryQuery self::assertInstanceOf(DummyResult::class, $ret); } /** * Tests for PMA_getNewTransformationDataSql() method. */ public function testPMAGetNewTransformationDataSql(): void { $resultStub = self::createMock(DummyResult::class); $resultStub->expects(self::any()) ->method('fetchAssoc') ->willReturn([ 'table_name' => 'table_name', 'column_name' => 'column_name', 'comment' => 'comment', 'mimetype' => 'mimetype', 'transformation' => 'transformation', 'transformation_options' => 'transformation_options', ]); $db = 'PMA_db'; $columnMap = [new SystemColumn('table_name', 'column_name', null)]; $viewName = 'view_name'; $ret = $this->sysDb->getNewTransformationDataSql($resultStub, $columnMap, $viewName, $db); $sql = 'INSERT INTO `information_schema`.`column_info` ' . '(`db_name`, `table_name`, `column_name`, `comment`, `mimetype`, ' . '`transformation`, `transformation_options`) VALUES ' . "('PMA_db', 'view_name', 'column_name', 'comment', 'mimetype', " . "'transformation', 'transformation_options')"; self::assertSame($sql, $ret); } public function testGetColumnMapFromSql(): void { $dummyDbi = $this->createDbiDummy(); $dbi = $this->createDatabaseInterface($dummyDbi); $dummyDbi->addResult( 'PMA_sql_query', true, [], [ FieldHelper::fromArray([ 'type' => MYSQLI_TYPE_STRING, 'table' => 'meta1_table', 'name' => 'meta1_name', ]), FieldHelper::fromArray([ 'type' => MYSQLI_TYPE_STRING, 'table' => 'meta2_table', 'name' => 'meta2_name', ]), ], ); $sqlQuery = 'PMA_sql_query'; $viewColumns = ['view_columns1', 'view_columns2']; $systemDatabase = new SystemDatabase($dbi); $columnMap = $systemDatabase->getColumnMapFromSql($sqlQuery, $viewColumns); self::assertEquals( new SystemColumn('meta1_table', 'meta1_name', 'view_columns1'), $columnMap[0], ); self::assertEquals( new SystemColumn('meta2_table', 'meta2_name', 'view_columns2'), $columnMap[1], ); $dummyDbi->assertAllQueriesConsumed(); } }