Translated using Weblate (Danish)
[phpmyadmin.git] / test / selenium / PmaSeleniumTrackingTest.php
blobccd2920b0c21218c363046233ff1d6e0d78724e6
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * Selenium TestCase for tracking related tests
6 * @package PhpMyAdmin-test
7 * @subpackage Selenium
8 */
9 require_once 'Helper.php';
11 /**
12 * PmaSeleniumTrackingTest class
14 * @package PhpMyAdmin-test
15 * @subpackage Selenium
17 class PmaSeleniumTrackingTest extends PHPUnit_Extensions_Selenium2TestCase
19 /**
20 * Name of database for the test
22 * @var string
24 private $_dbname;
26 /**
27 * Helper Object
29 * @var obj
31 private $_helper;
33 /**
34 * Setup the browser environment to run the selenium test case
36 * @return void
38 public function setUp()
40 $this->_helper = new Helper($this);
41 $this->setBrowser($this->_helper->getBrowserString());
42 $this->setBrowserUrl(TESTSUITE_PHPMYADMIN_HOST . TESTSUITE_PHPMYADMIN_URL);
43 $this->_helper->dbConnect();
44 $this->_dbname = 'pma_db_' . time();
45 $this->_helper->dbQuery('CREATE DATABASE ' . $this->_dbname);
46 $this->_helper->dbQuery('USE ' . $this->_dbname);
47 $this->_helper->dbQuery(
48 "CREATE TABLE `test_table` ("
49 . " `id` int(11) NOT NULL AUTO_INCREMENT,"
50 . " `val` int(11) NOT NULL,"
51 . " PRIMARY KEY (`id`)"
52 . ")"
54 $this->_helper->dbQuery(
55 "CREATE TABLE `test_table_2` ("
56 . " `id` int(11) NOT NULL AUTO_INCREMENT,"
57 . " `val` int(11) NOT NULL,"
58 . " PRIMARY KEY (`id`)"
59 . ")"
61 $this->_helper->dbQuery(
62 "INSERT INTO `test_table` (val) VALUES (2), (3);"
66 /**
67 * setUp function that can use the selenium session (called before each test)
69 * @return void
71 public function setUpPage()
73 $this->_helper->login(TESTSUITE_USER, TESTSUITE_PASSWORD);
74 $this->byLinkText($this->_dbname)->click();
75 $this->_helper->waitForElement(
76 "byXPath",
77 "//a[@class='item' and contains(., 'Database: ". $this->_dbname ."')]"
79 $ele = $this->byLinkText("More");
80 $this->moveto($ele);
81 $this->byLinkText("Tracking")->click();
82 $this->_helper->waitForElement("byLinkText", "Track table");
83 $this->byXPath("(//a[contains(., 'Track table')])[1]")->click();
85 $this->_helper->waitForElement("byName", "delete")->click();
86 $this->byCssSelector("input[value='Create version']")->click();
87 $this->_helper->waitForElement("byId", "versions");
90 /**
91 * Tests basic tracking functionality
93 * @return void
95 public function testTrackingData()
97 $this->_executeSqlAndReturnToTableTracking();
99 $this->byLinkText("Tracking report")->click();
100 $this->_helper->waitForElement(
101 "byXPath",
102 "//h3[contains(., 'Tracking report')]"
105 $this->assertContains(
106 "DROP TABLE IF EXISTS `test_table`",
107 $this->_helper->getTable("ddl_versions.1.4")
110 $this->assertContains(
111 "CREATE TABLE `test_table` (",
112 $this->_helper->getTable("ddl_versions.2.4")
115 $this->assertContains(
116 "UPDATE test_table SET val = val + 1",
117 $this->_helper->getTable("dml_versions.1.4")
120 $this->assertNotContains(
121 "DELETE FROM test_table WHERE val = 3",
122 $this->byId("dml_versions")->text()
125 // only structure
126 $this->select($this->byName("logtype"))
127 ->selectOptionByLabel("Structure only");
128 $this->byCssSelector("input[value='Go']")->click();
130 $this->_helper->waitForElementNotPresent("byId", "loading_parent");
132 $this->assertFalse(
133 $this->_helper->isElementPresent("byId", "dml_versions")
136 $this->assertContains(
137 "DROP TABLE IF EXISTS `test_table`",
138 $this->_helper->getTable("ddl_versions.1.4")
141 $this->assertContains(
142 "CREATE TABLE `test_table` (",
143 $this->_helper->getTable("ddl_versions.2.4")
146 // only data
147 $this->select($this->byName("logtype"))
148 ->selectOptionByLabel("Data only");
149 $this->byCssSelector("input[value='Go']")->click();
151 $this->_helper->waitForElementNotPresent("byId", "loading_parent");
153 $this->assertFalse(
154 $this->_helper->isElementPresent("byId", "ddl_versions")
157 $this->assertContains(
158 "UPDATE test_table SET val = val + 1",
159 $this->_helper->getTable("dml_versions.1.4")
162 $this->assertNotContains(
163 "DELETE FROM test_table WHERE val = 3",
164 $this->byId("dml_versions")->text()
169 * Tests deactivation of tracking
171 * @return void
173 public function testDeactivateTracking()
175 $this->byCssSelector("input[value='Deactivate now']")->click();
176 $this->_helper->waitForElement(
177 "byCssSelector", "input[value='Activate now']"
179 $this->_executeSqlAndReturnToTableTracking();
180 $this->assertFalse(
181 $this->_helper->isElementPresent("byId", "dml_versions")
186 * Tests dropping a tracking
188 * @return void
190 public function testDropTracking()
192 $this->byLinkText("Database: " . $this->_dbname)->click();
193 $this->_helper->waitForElement("byCssSelector", "table.data");
194 usleep(1000000);
195 $ele = $this->byLinkText("More");
196 $this->moveto($ele);
197 $this->byLinkText("Tracking")->click();
198 $this->_helper->waitForElement("byId", "versions");
199 $this->byLinkText("Drop")->click();
201 $this->_helper->waitForElement(
202 "byXPath",
203 "//button[contains(., 'OK')]"
204 )->click();
206 $this->_helper->waitForElement(
207 "byXPath",
208 "//div[@class='success' and contains(., "
209 . "'Your SQL query has been executed')]"
212 $this->assertContains(
213 "test_table",
214 $this->_helper->getTable("noversions.1.1")
217 $this->assertContains(
218 "test_table_2",
219 $this->_helper->getTable("noversions.2.1")
224 * Tests structure snapshot of a tracking
226 * @return void
228 public function testStructureSnapshot()
230 $this->byLinkText("Structure snapshot")->click();
231 $this->_helper->waitForElement("byId", "tablestructure");
233 $this->assertContains(
234 "id",
235 $this->_helper->getTable("tablestructure.1.1")
238 $this->assertContains(
239 "val",
240 $this->_helper->getTable("tablestructure.2.1")
243 $this->assertContains(
244 "PRIMARY",
245 $this->_helper->getTable("tablestructure_indexes.1.1")
248 $this->assertContains(
249 "id",
250 $this->_helper->getTable("tablestructure_indexes.1.5")
255 * Goes to SQL tab, executes queries, returns to tracking page
257 * @return void
259 private function _executeSqlAndReturnToTableTracking()
261 $this->byLinkText("SQL")->click();
262 $this->_helper->waitForElement("byId", "queryfieldscontainer");
263 $this->_helper->typeInTextArea(
264 ";UPDATE test_table SET val = val + 1; "
265 . "DELETE FROM test_table WHERE val = 3"
267 $this->byCssSelector("input[value='Go']")->click();
268 $this->_helper->waitForElement("byClassName", "success");
270 $ele = $this->byLinkText("More");
271 $this->moveto($ele);
272 $this->byLinkText("Tracking")->click();
273 $this->_helper->waitForElement("byId", "versions");
277 * Tear Down function for test cases
279 * @return void
281 public function tearDown()
283 $this->_helper->dbQuery('DROP DATABASE IF EXISTS ' . $this->_dbname);