createDatabaseInterface(); $_SESSION = [' PMA_token ' => 'token']; $relationParameters = RelationParameters::fromArray([ RelationParameters::DATABASE => 'pmadb', RelationParameters::PDF_PAGES => 'pdf_pages', RelationParameters::TABLE_COORDS => 'table_coords', RelationParameters::PDF_WORK => true, ]); (new ReflectionProperty(Relation::class, 'cache'))->setValue(null, $relationParameters); } /** * Mocks database interaction for tests. * * @param string $db database name */ private function mockDatabaseInteraction(string $db): void { $resultStub = $this->createMock(DummyResult::class); $dbi = $this->getMockBuilder(DatabaseInterface::class) ->disableOriginalConstructor() ->getMock(); $dbi->expects(self::once()) ->method('tryQueryAsControlUser') ->with( 'SELECT `page_nr`, `page_descr` FROM `pmadb`.`pdf_pages`' . " WHERE db_name = '" . $db . "' ORDER BY `page_descr`", ) ->willReturn($resultStub); $resultStub->expects(self::exactly(1)) ->method('fetchAllKeyPair') ->willReturn([ '1' => 'page1', '2' => 'page2', ]); $dbi->expects(self::any())->method('quoteString') ->willReturnCallback(static fn (string $string): string => "'" . $string . "'"); DatabaseInterface::$instance = $dbi; } /** * Test for getPageIdsAndNames() */ public function testGetPageIdsAndNames(): void { $db = 'db'; $this->mockDatabaseInteraction($db); $dbi = DatabaseInterface::getInstance(); $config = new Config(); $this->designer = new Designer($dbi, new Relation($dbi), new Template($config), $config); $method = new ReflectionMethod(Designer::class, 'getPageIdsAndNames'); $result = $method->invokeArgs($this->designer, [$db]); self::assertSame( ['1' => 'page1', '2' => 'page2'], $result, ); } /** * Test for getHtmlForEditOrDeletePages() */ public function testGetHtmlForEditOrDeletePages(): void { $db = 'db'; $operation = 'edit'; $this->mockDatabaseInteraction($db); $dbi = DatabaseInterface::getInstance(); $config = new Config(); $this->designer = new Designer($dbi, new Relation($dbi), new Template($config), $config); $result = $this->designer->getHtmlForEditOrDeletePages($db, $operation); self::assertStringContainsString('', $result); self::assertStringContainsString('', $result); self::assertStringContainsString('', $result, ); self::assertStringContainsString( '', $result, ); self::assertStringContainsString('', $result); } /** * Test for getHtmlForSchemaExport() */ public function testGetHtmlForSchemaExport(): void { $db = 'db'; $page = 2; $dbi = DatabaseInterface::getInstance(); $config = new Config(); $this->designer = new Designer($dbi, new Relation($dbi), new Template($config), $config); $result = $this->designer->getHtmlForSchemaExport($db, $page, null, null); // export type self::assertStringContainsString('', $result); // orientation self::assertStringContainsString( '', $result, ); self::assertStringContainsString('', $result); self::assertStringContainsString('', $result); } }