Merge pull request #4875 from civicrm/minor-fix
[civicrm-core.git] / tests / phpunit / WebTest / Contact / TagSetSearchTest.php
index b57b71ac27bec3347840c3faacb431f7dca115b6..69aa3bc607c0b106f6f61e7f25bca3a48e483757 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.5                                                |
+ | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
 */
 
 require_once 'CiviTest/CiviSeleniumTestCase.php';
+
+/**
+ * Class WebTest_Contact_TagSetSearchTest
+ */
 class WebTest_Contact_TagSetSearchTest extends CiviSeleniumTestCase {
 
   protected function setUp() {
     parent::setUp();
   }
 
-  function testTagSetSearch() {
+  public function testTagSetSearch() {
     $this->webtestLogin();
 
     $tagSet1 = $this->_testAddTagSet();
@@ -42,30 +46,30 @@ class WebTest_Contact_TagSetSearchTest extends CiviSeleniumTestCase {
     $this->webtestAddContact($contact1, "Anderson", "{$contact1}@example.com");
 
     $this->click('css=li#tab_tag a');
-    $this->waitForElementPresent("token-input-contact_taglist_{$tagSet1}");
+    $this->waitForElementPresent("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input");
 
     // Add tag1 for Individual 1
     $tag1 = substr(sha1(rand()), 0, 5);
-    $this->click("css=input#token-input-contact_taglist_{$tagSet1}");
-    $this->type("css=input#token-input-contact_taglist_{$tagSet1}", $tag1);
-    $this->typeKeys("css=input#token-input-contact_taglist_{$tagSet1}", $tag1);
+    $this->click("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input");
+    $this->keyDown("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input", " ");
+    $this->type("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input", $tag1);
+    $this->typeKeys("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input", $tag1);
     // ...waiting for drop down with results to show up...
-    $this->waitForElementPresent("css=div.token-input-dropdown-facebook");
-    $this->waitForElementPresent("css=li.token-input-dropdown-item2-facebook");
+    $this->waitForElementPresent("xpath=//div[@class='select2-result-label']");
     // ...need to use mouseDownAt on first result (which is a li element), click does not work
-    $this->mouseDownAt("css=li.token-input-dropdown-item2-facebook");
+    $this->clickAt("xpath=//div[@class='select2-result-label']");
     $this->waitForTextPresent($tag1);
 
     // Add tag2 for Individual 1
     $tag2 = substr(sha1(rand()), 0, 5);
-    $this->click("css=input#token-input-contact_taglist_{$tagSet2}");
-    $this->type("css=input#token-input-contact_taglist_{$tagSet2}", $tag2);
-    $this->typeKeys("css=input#token-input-contact_taglist_{$tagSet2}", $tag2);
+    $this->click("xpath=//*[@id='contact_taglist_{$tagSet2}']/../div/ul/li[1]/input");
+    $this->keyDown("xpath=//*[@id='contact_taglist_{$tagSet2}']/../div/ul/li[1]/input", " ");
+    $this->type("xpath=//*[@id='contact_taglist_{$tagSet2}']/../div/ul/li[1]/input", $tag2);
+    $this->typeKeys("xpath=//*[@id='contact_taglist_{$tagSet2}']/../div/ul/li[1]/input", $tag2);
     // ...waiting for drop down with results to show up...
-    $this->waitForElementPresent("css=div.token-input-dropdown-facebook");
-    $this->waitForElementPresent("css=li.token-input-dropdown-item2-facebook");
+    $this->waitForElementPresent("xpath=//div[@class='select2-result-label']");
     // ...need to use mouseDownAt on first result (which is a li element), click does not work
-    $this->mouseDownAt("css=li.token-input-dropdown-item2-facebook");
+    $this->clickAt("xpath=//div[@class='select2-result-label']");
     $this->waitForTextPresent($tag2);
 
     // Individual 2
@@ -73,51 +77,31 @@ class WebTest_Contact_TagSetSearchTest extends CiviSeleniumTestCase {
     $this->webtestAddContact($contact2, "Anderson", "{$contact2}@example.com");
 
     $this->click('css=li#tab_tag a');
-    $this->waitForElementPresent("token-input-contact_taglist_{$tagSet1}");
+    $this->waitForElementPresent("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input");
 
     // Add tag1 for Individual 2
-    $this->click("css=input#token-input-contact_taglist_{$tagSet1}");
-    $this->type("css=input#token-input-contact_taglist_{$tagSet1}", $tag1);
-    $this->typeKeys("css=input#token-input-contact_taglist_{$tagSet1}", $tag1);
+    $this->click("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input");
+    $this->keyDown("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input", " ");
+    $this->type("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input", $tag1);
+    $this->typeKeys("xpath=//*[@id='contact_taglist_{$tagSet1}']/../div/ul/li[1]/input", $tag1);
     // ...waiting for drop down with results to show up...
-    $this->waitForElementPresent("css=div.token-input-dropdown-facebook");
-    $this->waitForElementPresent("css=li.token-input-dropdown-item2-facebook");
+    $this->waitForElementPresent("xpath=//div[@class='select2-result-label']");
     // ...need to use mouseDownAt on first result (which is a li element), click does not work
-    $this->mouseDownAt("css=li.token-input-dropdown-item2-facebook");
+    $this->clickAt("xpath=//div[@class='select2-result-label']");
     $this->waitForTextPresent($tag1);
 
     // Go to Advance search.
     $this->openCiviPage('contact/search/advanced', 'reset=1');
 
     // Check both the tagset.
-    $this->assertTrue($this->isElementPresent("token-input-contact_taglist_{$tagSet1}"));
-    $this->assertTrue($this->isElementPresent("token-input-contact_taglist_{$tagSet2}"));
+    $this->assertTrue($this->isElementPresent("contact_taglist_{$tagSet1}"));
+    $this->assertTrue($this->isElementPresent("contact_taglist_{$tagSet2}"));
 
     // Search contact using tags.
-    $this->click("css=input#token-input-contact_taglist_{$tagSet1}");
-    $this->type("css=input#token-input-contact_taglist_{$tagSet1}", $tag1);
-    $this->typeKeys("css=input#token-input-contact_taglist_{$tagSet1}", $tag1);
-
-    // ...waiting for drop down with results to show up...
-    $this->waitForElementPresent("css=div.token-input-dropdown-facebook");
-    $this->waitForElementPresent("css=li.token-input-dropdown-item2-facebook");
-
-    // ...need to use mouseDownAt on first result (which is a li element), click does not work
-    $this->mouseDownAt("css=li.token-input-dropdown-item2-facebook");
+    $this->select2("contact_taglist_{$tagSet1}", $tag1, TRUE);
 
     $this->waitForTextPresent($tag1);
-    $this->click("css=input#token-input-contact_taglist_{$tagSet2}");
-    $this->type("css=input#token-input-contact_taglist_{$tagSet2}", $tag2);
-    $this->click("css=input#token-input-contact_taglist_{$tagSet2}");
-    $this->type("css=input#token-input-contact_taglist_{$tagSet2}", $tag2);
-    $this->typeKeys("css=input#token-input-contact_taglist_{$tagSet2}", $tag2);
-
-    // ...waiting for drop down with results to show up...
-    $this->waitForElementPresent("css=div.token-input-dropdown-facebook");
-    $this->waitForElementPresent("css=li.token-input-dropdown-item2-facebook");
-
-    // ...need to use mouseDownAt on first result (which is a li element), click does not work
-    $this->mouseDownAt("css=li.token-input-dropdown-item2-facebook");
+    $this->select2("contact_taglist_{$tagSet2}", $tag2, TRUE);
 
     $this->waitForTextPresent($tag2);
 
@@ -130,7 +114,10 @@ class WebTest_Contact_TagSetSearchTest extends CiviSeleniumTestCase {
     $this->assertElementContainsText('css=.crm-search-results table.selector', "Anderson, $contact2");
   }
 
-  function _testAddTagSet() {
+  /**
+   * @return array
+   */
+  public function _testAddTagSet() {
     // Go to add tag set url.
     $this->openCiviPage('admin/tag', 'action=add&reset=1&tagset=1');
 
@@ -161,13 +148,12 @@ class WebTest_Contact_TagSetSearchTest extends CiviSeleniumTestCase {
     $this->waitForElementPresent("css=table.display tbody tr td");
 
     // verify text
-    $this->waitForElementPresent("xpath=//table//tbody/tr/td[1][text()= '$tagSetName']");
+    $this->assertTrue($this->isTextPresent($tagSetName), 'Missing text: ' . $tagSetName);
 
-    $tagid = explode('&id=', $this->getAttribute("xpath=//table//tbody/tr/td[1][text()= '$tagSetName']/following-sibling::td[7]/span/a[text()= 'Edit']@href"));
+    $tagid = explode('&id=', $this->getAttribute("xpath=//table[@class='display dataTable no-footer']/tbody//tr/td[1]/div[text()= '$tagSetName']/../../td[8]/span/a[text()= 'Edit']@href"));
     $tagid = explode('&', $tagid[1]);
     $tagid = $tagid[0];
 
     return $tagid;
   }
 }
-