Skip to content

Commit 1c66f55

Browse files
committed
Add basic test for Table\ChangeController
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
1 parent 5bc129d commit 1c66f55

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PhpMyAdmin\Tests\Controllers\Table;
6+
7+
use PhpMyAdmin\Config\PageSettings;
8+
use PhpMyAdmin\ConfigStorage\Relation;
9+
use PhpMyAdmin\Controllers\Table\ChangeController;
10+
use PhpMyAdmin\InsertEdit;
11+
use PhpMyAdmin\Template;
12+
use PhpMyAdmin\Tests\AbstractTestCase;
13+
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
14+
15+
/**
16+
* @covers \PhpMyAdmin\Controllers\Table\ChangeController
17+
*/
18+
class ChangeControllerTest extends AbstractTestCase
19+
{
20+
public function testChangeController(): void
21+
{
22+
$GLOBALS['db'] = 'test_db';
23+
$GLOBALS['table'] = 'test_table';
24+
25+
$this->dummyDbi->addSelectDb('test_db');
26+
$this->dummyDbi->addResult('SHOW TABLES LIKE \'test_table\';', [['test_table']]);
27+
$this->dummyDbi->addResult(
28+
'SELECT * FROM `test_db`.`test_table` LIMIT 1;',
29+
[['1', 'abcd', '2011-01-20 02:00:02']],
30+
['id', 'name', 'datetimefield']
31+
);
32+
$this->dummyDbi->addSelectDb('test_db');
33+
34+
$response = new ResponseRenderer();
35+
$pageSettings = new PageSettings('Edit');
36+
37+
(new ChangeController(
38+
$response,
39+
new Template(),
40+
new InsertEdit($this->dbi),
41+
new Relation($this->dbi)
42+
))();
43+
$actual = $response->getHTMLResult();
44+
45+
$this->assertStringContainsString($pageSettings->getHTML(), $actual);
46+
$this->assertStringContainsString(
47+
'<input type="text" name="fields[multi_edit][0][b80bb7740288fda1f201890375a60c8f]" value="NULL"'
48+
. ' size="4" min="-2147483648" max="2147483647" data-type="INT" class="textfield"'
49+
. ' onchange="return'
50+
. ' verificationsAfterFieldChange(\'b80bb7740288fda1f201890375a60c8f\', \'0\',\'int(11)\')"'
51+
. ' tabindex="1" id="field_1_3"><input type="hidden"'
52+
. ' name="auto_increment[multi_edit][0][b80bb7740288fda1f201890375a60c8f]" value="1">',
53+
$actual
54+
);
55+
$this->assertStringContainsString(
56+
'<input type="text" name="fields[multi_edit][0][b068931cc450442b63f5b3d276ea4297]" value="NULL" size="20"'
57+
. ' data-maxlength="20" data-type="CHAR" class="textfield" onchange="return'
58+
. ' verificationsAfterFieldChange(\'b068931cc450442b63f5b3d276ea4297\', \'0\',\'varchar(20)\')"'
59+
. ' tabindex="2" id="field_2_3">',
60+
$actual
61+
);
62+
$this->assertStringContainsString(
63+
'<input type="text" name="fields[multi_edit][0][a55dbdcc1a45ed90dbee68864d566b99]" value="NULL.000000"'
64+
. ' size="4" data-type="DATE" class="textfield datetimefield" onchange="return'
65+
. ' verificationsAfterFieldChange(\'a55dbdcc1a45ed90dbee68864d566b99\', \'0\',\'datetime\')"'
66+
. ' tabindex="3" id="field_3_3"><input type="hidden"'
67+
. ' name="fields_type[multi_edit][0][a55dbdcc1a45ed90dbee68864d566b99]" value="datetime">',
68+
$actual
69+
);
70+
}
71+
}

0 commit comments

Comments
 (0)