createDbiDummy(); $dummyDbi->addSelectDb('test_db'); $dummyDbi->addResult('SELECT 1 FROM `test_db`.`test_table` LIMIT 1;', [['1']]); $dummyDbi->addResult( 'SELECT * FROM `test_db`.`test_table` LIMIT 1;', [['1', 'abcd', '2011-01-20 02:00:02']], ['id', 'name', 'datetimefield'], ); $dummyDbi->addSelectDb('test_db'); $dbi = $this->createDatabaseInterface($dummyDbi); DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); $pageSettings = new PageSettings( new UserPreferences($dbi, new Relation($dbi), new Template()), ); $pageSettings->init('Edit'); $request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/') ->withQueryParams(['db' => 'test_db', 'table' => 'test_table']) ->withParsedBody(['insert_rows' => '0']); $config = Config::getInstance(); $config->set('InsertRows', 3); $config->set('ShowFunctionFields', true); $config->set('ShowFieldTypesInDataEditView', true); $relation = new Relation($dbi); $template = new Template(); (new ChangeController( $response, $template, new InsertEdit($dbi, $relation, new Transformations(), new FileListing(), $template, $config), $relation, $pageSettings, new DbTableExists($dbi), $config, ))($request); $actual = $response->getHTMLResult(); self::assertStringContainsString($pageSettings->getHTML(), $actual); self::assertStringContainsString( '', $actual, ); self::assertStringContainsString( '', $actual, ); self::assertStringContainsString( '', $actual, ); self::assertStringContainsString( 'Type', $actual, ); self::assertStringContainsString( 'Function', $actual, ); self::assertStringContainsString( '', $actual, ); $dummyDbi->assertAllSelectsConsumed(); $dummyDbi->assertAllQueriesConsumed(); } public function testChangeController2(): void { Current::$database = 'test_db'; Current::$table = 'test_table'; Current::$whereClause = null; $dummyDbi = $this->createDbiDummy(); $dummyDbi->addSelectDb('test_db'); $dummyDbi->addResult('SELECT 1 FROM `test_db`.`test_table` LIMIT 1;', [['1']]); $dummyDbi->addResult( 'SELECT * FROM `test_db`.`test_table` LIMIT 1;', [['1', 'abcd', '2011-01-20 02:00:02']], ['id', 'name', 'datetimefield'], ); $dummyDbi->addSelectDb('test_db'); $dbi = $this->createDatabaseInterface($dummyDbi); DatabaseInterface::$instance = $dbi; $response = new ResponseRenderer(); $pageSettings = new PageSettings( new UserPreferences($dbi, new Relation($dbi), new Template()), ); $pageSettings->init('Edit'); $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withQueryParams(['db' => 'test_db', 'table' => 'test_table']) ->withParsedBody(['insert_rows' => '1']); $config = Config::getInstance(); $config->set('InsertRows', 3); $config->set('ShowFunctionFields', false); $config->set('ShowFieldTypesInDataEditView', false); $relation = new Relation($dbi); $template = new Template(); (new ChangeController( $response, $template, new InsertEdit($dbi, $relation, new Transformations(), new FileListing(), $template, $config), $relation, $pageSettings, new DbTableExists($dbi), $config, ))($request); $actual = $response->getHTMLResult(); self::assertStringContainsString( '', $actual, ); self::assertStringContainsString( 'Show : Function : Type', $actual, ); $dummyDbi->assertAllSelectsConsumed(); $dummyDbi->assertAllQueriesConsumed(); } /** * Test for urlParamsInEditMode */ public function testUrlParamsInEditMode(): void { $changeController = new ChangeController( self::createStub(ResponseRenderer::class), self::createStub(Template::class), self::createStub(InsertEdit::class), self::createStub(Relation::class), self::createStub(PageSettings::class), new DbTableExists($this->createDatabaseInterface()), self::createStub(Config::class), ); $whereClauseArray = ['foo=1', 'bar=2']; $_POST['sql_query'] = 'SELECT 1'; $request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/') ->withParsedBody(['sql_query' => 'SELECT 1']); $result = $changeController->urlParamsInEditMode($request, ['temp' => 1], $whereClauseArray); self::assertSame( ['temp' => 1, 'where_clause' => 'bar=2', 'sql_query' => 'SELECT 1'], $result, ); } }