1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Selenium\Table;
use PhpMyAdmin\Tests\Selenium\TestBase;
/**
* @coversNothing
*/
#[\PHPUnit\Framework\Attributes\CoversNothing]
class InsertTest extends TestBase
{
/**
* Setup the browser environment to run the selenium t
* est case
*/
protected function setUp(): void
{
parent::setUp();
$this->dbQuery(
'USE `' . $this->databaseName . '`;'
. 'CREATE TABLE `test_table` ('
. ' `id` int(11) NOT NULL AUTO_INCREMENT,'
. ' `name` varchar(20) NOT NULL,'
. ' `datetimefield` datetime NOT NULL,'
. ' PRIMARY KEY (`id`)'
. ');'
);
$this->login();
$this->navigateTable('test_table');
}
/**
* Insert data into table
*
* @group large
*/
#[\PHPUnit\Framework\Attributes\Group('large-group')]
public function testAddData(): void
{
if ($this->isSafari()) {
/* TODO: this should be fixed, but the cause is unclear to me */
$this->markTestIncomplete('Fails with Safari');
}
$this->waitAjax();
$this->expandMore();
$this->byPartialLinkText('Insert')->click();
$this->waitAjax();
$this->waitForElement('id', 'insertForm');
// shorter date to prevent error,
// automatically gets appended with 00:00:00
$this->byId('field_3_3')->click()->clear()->sendKeys('2011-01-2');
$this->byId('field_1_3')->sendKeys('1');
$this->byId('field_2_3')->sendKeys('abcd');
// shorter date to prevent error,
// automatically gets appended with 00:00:00
$this->byId('field_6_3')->click()->clear()->sendKeys('2012-01-2');
$this->byId('field_5_3')->sendKeys('foo');
$this->selectByLabel(
$this->byName('after_insert'),
'Insert another new row'
);
// post
$this->byId('buttonYes')->click();
$this->waitAjax();
$ele = $this->waitForElement('className', 'alert-success');
self::assertStringContainsString('2 rows inserted', $ele->getText());
// shorter date to prevent error,
// automatically gets appended with 00:00:00
$this->byId('field_3_3')->click()->clear()->sendKeys('2013-01-2');
$this->byId('field_2_3')->sendKeys('Abcd');
// post
$this->byCssSelector('input[value=Go]')->click();
$this->waitAjax();
// New message
$ele = $this->waitForElement(
'xpath',
"//div[contains(@class, 'alert-success') and not(contains(@class, 'message'))]"
);
self::assertStringContainsString('1 row inserted', $ele->getText());
$this->assertDataPresent();
}
/**
* Assert various data present in results table
*/
private function assertDataPresent(): void
{
$this->byPartialLinkText('Browse')->click();
$this->waitAjax();
$this->waitForElement('cssSelector', 'table.table_results');
self::assertEquals('1', $this->getCellByTableClass('table_results', 1, 5));
self::assertEquals('abcd', $this->getCellByTableClass('table_results', 1, 6));
self::assertEquals('2011-01-02 00:00:00', $this->getCellByTableClass('table_results', 1, 7));
self::assertEquals('2', $this->getCellByTableClass('table_results', 2, 5));
self::assertEquals('foo', $this->getCellByTableClass('table_results', 2, 6));
self::assertEquals('2012-01-02 00:00:00', $this->getCellByTableClass('table_results', 2, 7));
self::assertEquals('4', $this->getCellByTableClass('table_results', 3, 5));
self::assertEquals('Abcd', $this->getCellByTableClass('table_results', 3, 6));
self::assertEquals('2013-01-02 00:00:00', $this->getCellByTableClass('table_results', 3, 7));
}
}
|