[ 1 => [ 'version' => Version::VERSION, 'db' => 'pmadb', 'pdf_pages' => 'pdf_pages', 'table_coords' => 'table_coords', 'pdfwork' => true, ], ], ' PMA_token ' => 'token', ]; } /** * 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($this->once()) ->method('tryQueryAsControlUser') ->with( 'SELECT `page_nr`, `page_descr` FROM `pmadb`.`pdf_pages`' . " WHERE db_name = '" . $db . "' ORDER BY `page_descr`" ) ->will($this->returnValue($resultStub)); $resultStub->expects($this->exactly(3)) ->method('fetchAssoc') ->willReturnOnConsecutiveCalls( [ 'page_nr' => '1', 'page_descr' => 'page1', ], [ 'page_nr' => '2', 'page_descr' => 'page2', ], [] ); $dbi->expects($this->any()) ->method('escapeString') ->will($this->returnArgument(0)); $GLOBALS['dbi'] = $dbi; } /** * Test for getPageIdsAndNames() */ public function testGetPageIdsAndNames(): void { $db = 'db'; $this->mockDatabaseInteraction($db); $this->designer = new Designer($GLOBALS['dbi'], new Relation($GLOBALS['dbi']), new Template()); $method = new ReflectionMethod(Designer::class, 'getPageIdsAndNames'); if (PHP_VERSION_ID < 80100) { $method->setAccessible(true); } $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); $this->designer = new Designer($GLOBALS['dbi'], new Relation($GLOBALS['dbi']), new Template()); $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; $this->designer = new Designer($GLOBALS['dbi'], new Relation($GLOBALS['dbi']), new Template()); $result = $this->designer->getHtmlForSchemaExport($db, $page); // export type self::assertStringContainsString('', $result); // orientation self::assertStringContainsString( '', $result ); self::assertStringContainsString('', $result); self::assertStringContainsString('', $result); } }