Waiting for ajax_message_num_1 works only on first AJAX request and we're doing more of them. This should remove need for many consequent sleeps as we were actually not properly waiting for element. Also it's better to wrap this logic in separate method as it is used in many places in the code. Signed-off-by: Michal Čihař <michal@cihar.com>
119 lines
2.8 KiB
PHP
119 lines
2.8 KiB
PHP
<?php
|
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
|
/**
|
|
* Selenium TestCase for table related tests
|
|
*
|
|
* @package PhpMyAdmin-test
|
|
* @subpackage Selenium
|
|
*/
|
|
|
|
require_once 'TestBase.php';
|
|
|
|
/**
|
|
* PmaSeleniumDbStructureTest class
|
|
*
|
|
* @package PhpMyAdmin-test
|
|
* @subpackage Selenium
|
|
* @group selenium
|
|
*/
|
|
class PMA_SeleniumDbStructureTest extends PMA_SeleniumBase
|
|
{
|
|
/**
|
|
* Setup the browser environment to run the selenium test case
|
|
*
|
|
* @return void
|
|
*/
|
|
public function setUp()
|
|
{
|
|
parent::setUp();
|
|
$this->dbQuery(
|
|
"CREATE TABLE `test_table` ("
|
|
. " `id` int(11) NOT NULL AUTO_INCREMENT,"
|
|
. " `val` int(11) NOT NULL,"
|
|
. " PRIMARY KEY (`id`)"
|
|
. ")"
|
|
);
|
|
$this->dbQuery(
|
|
"CREATE TABLE `test_table2` ("
|
|
. " `id` int(11) NOT NULL AUTO_INCREMENT,"
|
|
. " `val` int(11) NOT NULL,"
|
|
. " PRIMARY KEY (`id`)"
|
|
. ")"
|
|
);
|
|
$this->dbQuery(
|
|
"INSERT INTO `test_table` (val) VALUES (2);"
|
|
);
|
|
}
|
|
|
|
/**
|
|
* setUp function that can use the selenium session (called before each test)
|
|
*
|
|
* @return void
|
|
*/
|
|
public function setUpPage()
|
|
{
|
|
parent::setUpPage();
|
|
|
|
$this->login();
|
|
$this->navigateDatabase($this->database_name);
|
|
|
|
// Let the Database page load
|
|
$this->waitAjax();
|
|
$this->expandMore();
|
|
}
|
|
|
|
/**
|
|
* Test for truncating a table
|
|
*
|
|
* @return void
|
|
*
|
|
* @group large
|
|
*/
|
|
public function testTruncateTable()
|
|
{
|
|
$this->byXPath("(//a[contains(., 'Empty')])[1]")->click();
|
|
|
|
$this->waitForElement(
|
|
"byCssSelector",
|
|
"button.submitOK"
|
|
)->click();
|
|
|
|
$this->assertNotNull(
|
|
$this->waitForElement(
|
|
"byXPath",
|
|
"//div[@class='success' and contains(., "
|
|
. "'MySQL returned an empty result')]"
|
|
)
|
|
);
|
|
|
|
$result = $this->dbQuery("SELECT count(*) as c FROM test_table");
|
|
$row = $result->fetch_assoc();
|
|
$this->assertEquals(0, $row['c']);
|
|
}
|
|
|
|
/**
|
|
* Tests for dropping multiple tables
|
|
*
|
|
* @return void
|
|
*
|
|
* @group large
|
|
*/
|
|
public function testDropMultipleTables()
|
|
{
|
|
$this->byCssSelector("label[for='tablesForm_checkall']")->click();
|
|
$this->select($this->byName("submit_mult"))
|
|
->selectOptionByLabel("Drop");
|
|
$this->waitForElement("byId", "buttonYes")
|
|
->click();
|
|
|
|
$this->waitForElement(
|
|
"byXPath",
|
|
"//*[contains(., 'No tables found in database')]"
|
|
);
|
|
|
|
$result = $this->dbQuery("SHOW TABLES;");
|
|
$this->assertEquals(0, $result->num_rows);
|
|
|
|
}
|
|
}
|