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();
$config = Config::getInstance();
$template = new Template($config);
$relation = new Relation($dbi, $config);
$userPreferences = new UserPreferences($dbi, $relation, $template, $config, new Clock());
$pageSettings = new PageSettings($userPreferences, $response);
$pageSettings->init('Edit');
$request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/')
->withQueryParams(['db' => 'test_db', 'table' => 'test_table'])
->withParsedBody(['insert_rows' => '0']);
$config->set('InsertRows', 3);
$insertEdit = new InsertEdit(
$dbi,
$relation,
new Transformations($dbi, $relation),
new FileListing(),
$template,
$config,
$response,
);
(new ChangeController(
$response,
$template,
$insertEdit,
$relation,
$pageSettings,
new DbTableExists($dbi),
$config,
))($request);
$actual = $response->getHTMLResult();
self::assertStringContainsString($pageSettings->getHTML(), $actual);
// phpcs:disable Generic.Files.LineLength.TooLong
self::assertStringContainsString(
<<<'HTML'
HTML,
$actual,
);
self::assertStringContainsString(
<<<'HTML'
HTML,
$actual,
);
self::assertStringContainsString(
<<<'HTML'
HTML,
$actual,
);
// phpcs:enable
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();
$config = Config::getInstance();
$relation = new Relation($dbi, $config);
$template = new Template($config);
$userPreferences = new UserPreferences($dbi, $relation, $template, $config, new Clock());
$pageSettings = new PageSettings($userPreferences, $response);
$pageSettings->init('Edit');
$request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/')
->withQueryParams(['db' => 'test_db', 'table' => 'test_table'])
->withParsedBody(['insert_rows' => '1']);
$config->set('InsertRows', 3);
$config->set('ShowFunctionFields', false);
$config->set('ShowFieldTypesInDataEditView', false);
$insertEdit = new InsertEdit(
$dbi,
$relation,
new Transformations($dbi, $relation),
new FileListing(),
$template,
$config,
$response,
);
(new ChangeController(
$response,
$template,
$insertEdit,
$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,
);
}
}