formating fixes
[civicrm-core.git] / tests / phpunit / WebTest / Mailing / MailingTest.php
index d751aeb8540eda36d45ef5a5768e785ecec85f1d..2c542c7bebd3252fcd258f38c8ca76329f63b122 100644 (file)
@@ -22,7 +22,7 @@
  | GNU Affero General Public License or the licensing of CiviCRM,     |
  | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
  +--------------------------------------------------------------------+
-*/
+ */
 
 require_once 'CiviTest/CiviSeleniumTestCase.php';
 
@@ -78,60 +78,69 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
     // configure default mail-box
     $this->setupDefaultMailbox();
 
-    $this->openCiviPage("mailing/send", "reset=1", "_qf_Group_cancel");
+    $this->openCiviPage("a/#/mailing/new");
 
     //-------select recipients----------
 
     // fill mailing name
     $mailingName = substr(sha1(rand()), 0, 7);
-    $this->type("name", "Mailing $mailingName Webtest");
+    $this->waitForElementPresent("xpath=//input[@name='mailingName']");
+    $this->type("xpath=//input[@name='mailingName']", "Mailing $mailingName Webtest");
 
     // Add the test mailing group
-    $this->select("includeGroups", "$groupName");
-
-    // click next
-    $this->clickLink("_qf_Group_next", "_qf_Settings_cancel", FALSE);
-
-    //--------track and respond----------
-
-    // check for default settings options
-    $this->assertChecked("url_tracking");
-    $this->assertChecked("open_tracking");
+    $this->select2("s2id_crmUiId_8", $groupName, TRUE);
 
     // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
-    // no need tracking for this test
-
-    // click next with default settings
-    $this->clickLink("_qf_Settings_next", "_qf_Upload_cancel");
-
-    //--------Mailing content------------
-    // let from email address be default
+    $this->waitForTextPresent("~1 recipient");
 
     // fill subject for mailing
-    $this->type("subject", "Test subject {$mailingName} for Webtest");
-
-    // check for default option enabled
-    $this->assertChecked("CIVICRM_QFID_1_upload_type");
+    $this->type("xpath=//input[@name='subject']", "Test subject {$mailingName} for Webtest");
 
     // HTML format message
     $HTMLMessage = "This is HTML formatted content for Mailing {$mailingName} Webtest.";
-    $this->fillRichTextField("html_message", $HTMLMessage);
+    $this->fillRichTextField("crmUiId_1", $HTMLMessage);
+    $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as HTML']");
+    $this->waitForTextPresent($HTMLMessage);
+    $this->waitForAjaxContent();
+    $this->click("xpath=//button[@title='Close']");
 
     // Open Plain-text Format pane and type text format msg
-    $this->click("//fieldset[@id='compose_id']/div[2]/div[1]");
-    $this->type("text_message", "This is text formatted content for Mailing {$mailingName} Webtest.");
+    $this->click("//div[text()='Plain Text']");
+    $this->type("xpath=//*[@name='body_text']", "This is text formatted content for Mailing {$mailingName} Webtest.");
+
+    $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as Plain Text']");
+    $this->waitForTextPresent("This is text formatted content for Mailing {$mailingName} Webtest.");
+    $this->waitForAjaxContent();
+    $this->click("xpath=//button[@title='Close']");
 
     // select default header and footer ( with label )
-    $this->select("header_id", "label=Mailing Header");
-    $this->select("footer_id", "label=Mailing Footer");
+    $this->click("xpath=//ul/li/a[text()='Header and Footer']");
+    $this->select2("s2id_crmUiId_10", "Mailing Header");
+    $this->select2("s2id_crmUiId_11", "Mailing Footer");
 
-    // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+    //--------track and respond----------
+
+    // check for default settings options
+    $this->click("xpath=//ul/li/a[text()='Tracking']");
+    $this->assertChecked("url_tracking");
+    $this->assertChecked("open_tracking");
+
+    // click next with default settings
+    $this->click("xpath=//div[@class='crm-wizard-buttons']/button[text()='Next']");
+
+    $this->waitForTextPresent("Mailing $mailingName Webtest");
+    $this->click("xpath=//div[@class='content']//a[text()='~1 recipient']");
+    $this->webtestVerifyTabularData(array("$firstName Mailson" => "mailino$firstName@mailson.co.in"));
+    $this->click("xpath=//button[@title='Close']");
+    $this->waitForTextPresent("(Include: $groupName)");
+
+    //----------Schedule or Send------------
+
+    // do check for default option enabled
+    $this->assertChecked("xpath=//input[@id='schedule-send-now']");
 
     // click next with nominal content
-    $this->clickLink("_qf_Upload_upload", "_qf_Test_cancel");
+    $this->click("xpath=//center/a/div[text()='Submit Mailing']");
 
     //---------------Test------------------
 
@@ -150,27 +159,10 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
 
     ////////
 
-    // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
-    // click next
-    $this->clickLink("_qf_Test_next", "_qf_Schedule_cancel");
-
-    //----------Schedule or Send------------
-
-    // do check for default option enabled
-    $this->assertChecked("now");
-
-    // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
-    // finally schedule the mail by clicking submit
-    $this->clickLink("_qf_Schedule_next");
-
     //----------end New Mailing-------------
 
     //check redirected page to Scheduled and Sent Mailings and  verify for mailing name
-    $this->assertElementContainsText('page-title', "Find Mailings");
+    $this->waitForTextPresent("Find Mailings");
     $this->assertElementContainsText("xpath=//table[@class='selector row-highlight']/tbody//tr//td", "Mailing $mailingName Webtest");
 
     //--------- mail delivery verification---------
@@ -214,10 +206,10 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
     $this->clickLink("link=Successful Deliveries");
 
     // check for open page
-    $this->assertElementContainsText( 'page-title', "Successful Deliveries");
+    $this->waitForTextPresent("Successful Deliveries");
 
     // verify email
-    $this->verifyText("xpath=//table[@id='mailing_event']/tbody//tr/td[2]", preg_quote("mailino$firstName@mailson.co.in"));
+    $this->verifyText("xpath=//table[@id='mailing_event']/tbody//tr/td[3]", preg_quote("mailino$firstName@mailson.co.in"));
 
     $eventQueue = new CRM_Mailing_Event_DAO_Queue();
     $eventQueue->contact_id = $contactId;
@@ -228,7 +220,10 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
     $this->webtestLogout();
 
     // build forward url
-    $forwardUrl = array("mailing/forward", "reset=1&jid={$eventQueue->job_id}&qid={$eventQueue->id}&h={$eventQueue->hash}");
+    $forwardUrl = array(
+      "mailing/forward",
+      "reset=1&jid={$eventQueue->job_id}&qid={$eventQueue->id}&h={$eventQueue->hash}",
+    );
     $this->openCiviPage($forwardUrl[0], $forwardUrl[1], NULL);
 
     $this->type("email_0", substr(sha1(rand()), 0, 7) . '@example.com');
@@ -333,79 +328,74 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
     $this->select('protocol', 'value=1');
     $this->clickLink('_qf_MailSettings_next-bottom');
 
-    // Go to Schedule and Send Mailing form
-    $this->openCiviPage('mailing/send', 'reset=1', '_qf_Group_cancel');
+    $this->openCiviPage("a/#/mailing/new");
 
     //-------select recipients----------
 
     // fill mailing name
     $mailingName = substr(sha1(rand()), 0, 7);
-    $this->type("name", "Mailing $mailingName Webtest");
+    $this->waitForElementPresent("xpath=//input[@name='mailingName']");
+    $this->type("xpath=//input[@name='mailingName']", "Mailing $mailingName Webtest");
 
     // Add the test mailing group
-    $this->select("includeGroups", "$groupName");
-
-    // click next
-    $this->click("_qf_Group_next");
-    $this->waitForElementPresent("_qf_Settings_cancel");
-
-    //--------track and respond----------
-
-    // check for default settings options
-    $this->assertChecked("url_tracking");
-    $this->assertChecked("open_tracking");
+    $this->select2("s2id_crmUiId_8", $groupName, TRUE);
 
     // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
-    // click next with default settings
-    $this->clickLink("_qf_Settings_next");
+    $this->waitForTextPresent("~1 recipient");
 
     // fill subject for mailing
-    $this->type("subject", "Test subject {$mailingName} for Webtest");
-
-    // check for default option enabled
-    $this->assertChecked("CIVICRM_QFID_1_upload_type");
+    $this->type("xpath=//input[@name='subject']", "Test subject {$mailingName} for Webtest");
 
     // HTML format message
     $HTMLMessage = "This is HTML formatted content for Mailing {$mailingName} Webtest.";
-    $this->fillRichTextField("html_message", $HTMLMessage);
+    $this->fillRichTextField("crmUiId_1", $HTMLMessage);
+    $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as HTML']");
+    $this->waitForElementPresent($HTMLMessage);
+    $this->waitForAjaxContent();
+    $this->click("xpath=//button[@title='Close']");
 
     // Open Plain-text Format pane and type text format msg
-    $this->click("//fieldset[@id='compose_id']/div[2]/div[1]");
-    $this->type("text_message", "This is text formatted content for Mailing {$mailingName} Webtest.");
+    $this->click("//div[text()='Plain Text']");
+    $this->type("xpath=//*[@name='body_text']", "This is text formatted content for Mailing {$mailingName} Webtest.");
+
+    $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as Plain Text']");
+    $this->waitForTextPresent("This is text formatted content for Mailing {$mailingName} Webtest.");
+    $this->waitForAjaxContent();
+    $this->click("xpath=//button[@title='Close']");
 
     // select default header and footer ( with label )
-    $this->select("header_id", "label=Mailing Header");
-    $this->select("footer_id", "label=Mailing Footer");
+    $this->click("xpath=//ul/li/a[text()='Header and Footer']");
+    $this->select2("s2id_crmUiId_10", "Mailing Header");
+    $this->select2("s2id_crmUiId_11", "Mailing Footer");
 
-    // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+    //--------track and respond----------
 
-    // click next with nominal content
-    $this->clickLink("_qf_Upload_upload", "_qf_Test_cancel");
+    // check for default settings options
+    $this->click("xpath=//ul/li/a[text()='Tracking']");
+    $this->assertChecked("url_tracking");
+    $this->assertChecked("open_tracking");
 
-    // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+    // click next with default settings
+    $this->click("xpath=//div[@class='crm-wizard-buttons']/button[text()='Next']");
 
-    // click next
-    $this->clickLink("_qf_Test_next", "_qf_Schedule_cancel");
+    $this->waitForTextPresent("Mailing $mailingName Webtest");
+    $this->click("xpath=//div[@class='content']//a[text()='~1 recipient']");
+    $this->webtestVerifyTabularData(array("$firstName Mailson" => "mailino$firstName@mailson.co.in"));
+    $this->click("xpath=//button[@title='Close']");
+    $this->waitForTextPresent("(Include: $groupName)");
 
     //----------Schedule or Send------------
 
     // do check for default option enabled
-    $this->assertChecked("now");
+    $this->assertChecked("xpath=//input[@id='schedule-send-now']");
 
-    // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
-    // finally schedule the mail by clicking submit
-    $this->clickLink("_qf_Schedule_next");
+    // click next with nominal content
+    $this->click("xpath=//center/a/div[text()='Submit Mailing']");
 
     //----------end New Mailing-------------
 
     //check redirected page to Scheduled and Sent Mailings and  verify for mailing name
-    $this->assertElementContainsText('page-title', "Find Mailings");
+    $this->waitForTextPresent("Find Mailings");
     $this->assertElementContainsText("xpath=//table[@class='selector row-highlight']/tbody//tr//td", "Mailing $mailingName Webtest");
 
     // directly send schedule mailing -- not working right now
@@ -421,10 +411,20 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
     // verify successful deliveries
     $this->verifyText("xpath=//table//tr[td/a[text()='Successful Deliveries']]/descendant::td[2]", preg_quote("1 (100.00%)"));
 
-    $summaryInfoLinks = array('Intended Recipients', 'Successful Deliveries', 'Tracked Opens', 'Click-throughs', 'Forwards', 'Replies', 'Bounces', 'Unsubscribe Requests', 'Opt-out Requests');
+    $summaryInfoLinks = array(
+      'Intended Recipients',
+      'Successful Deliveries',
+      'Tracked Opens',
+      'Click-throughs',
+      'Forwards',
+      'Replies',
+      'Bounces',
+      'Unsubscribe Requests',
+      'Opt-out Requests',
+    );
 
     //check for report and adv search links
-    foreach($summaryInfoLinks as $value) {
+    foreach ($summaryInfoLinks as $value) {
       $this->assertTrue($this->isElementPresent("xpath=//fieldset/legend[text()='Delivery Summary']/../table//tr[td/a[text()='{$value}']]/descendant::td[3]/span/a[1][text()='Report']"), "Report link missing for {$value}");
       $this->assertTrue($this->isElementPresent("xpath=//fieldset/legend[text()='Delivery Summary']/../table//tr[td/a[text()='{$value}']]/descendant::td[3]/span/a[2][text()='Advanced Search']"), "Advance Search link missing for {$value}");
     }
@@ -435,69 +435,85 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
     $this->verifyText("xpath=//table//tr[td[1]/text()='Subject']/descendant::td[2]", preg_quote("Test subject $mailingName for Webtest"));
 
     // after asserts do clicks and confirm filters
-    $criteriaCheck =
-      array(
-        'Intended Recipients' =>
-        array(
-          'report' => array('report_name' => 'Mailing Details', 'Mailing' => "Mailing $mailingName Webtest"),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest")
+    $criteriaCheck = array(
+      'Intended Recipients' => array(
+        'report' => array('report_name' => 'Mailing Details', 'Mailing' => "Mailing $mailingName Webtest"),
+        'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest"),
+      ),
+      'Successful Deliveries' => array(
+        'report' => array(
+          'report_name' => 'Mailing Details',
+          'Mailing' => "Mailing $mailingName Webtest",
+          "Delivery Status" => " Successful",
+        ),
+        'search' => array(
+          'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+          'Mailing Delivery -' => "Successful",
         ),
-        'Successful Deliveries' =>
-        array(
-          'report' => array(
-    'report_name' => 'Mailing Details',
-    'Mailing' => "Mailing $mailingName Webtest",
-                    "Delivery Status" => " Successful"),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing Delivery -' => "Successful")
+      ),
+      'Tracked Opens' => array(
+        'report' => array('report_name' => 'Mail Opened', 'Mailing' => "Mailing $mailingName Webtest"),
+        'search' => array(
+          'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+          'Mailing: Trackable Opens -' => "Opened",
         ),
-        'Tracked Opens' =>
-        array(
-          'report' => array('report_name' => 'Mail Opened', 'Mailing' => "Mailing $mailingName Webtest"),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: Trackable Opens -' => "Opened")
+      ),
+      'Click-throughs' => array(
+        'report' => array('report_name' => 'Mail Clickthroughs', 'Mailing' => "Mailing $mailingName Webtest"),
+        'search' => array(
+          'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+          'Mailing: Trackable URL Clicks -' => "Clicked",
         ),
-        'Click-throughs' =>
-        array(
-          'report' => array('report_name' => 'Mail Clickthroughs', 'Mailing' => "Mailing $mailingName Webtest"),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: Trackable URL Clicks -' => "Clicked")
+      ),
+      'Forwards' => array(
+        'report' => array(
+          'report_name' => 'Mailing Details',
+          'Mailing' => "Mailing $mailingName Webtest",
+          'Forwarded' => 'Is equal to Yes',
         ),
-        'Forwards' =>
-        array(
-          'report' => array(
-    'report_name' => 'Mailing Details',
-    'Mailing' => "Mailing $mailingName Webtest",
-                    'Forwarded' => 'Is equal to Yes'),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: -' => "Forwards")
+        'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: -' => "Forwards"),
+      ),
+      'Replies' => array(
+        'report' => array(
+          'report_name' => 'Mailing Details',
+          'Mailing' => "Mailing $mailingName Webtest",
+          'Replied' => 'Is equal to Yes',
         ),
-        'Replies' =>
-        array(
-          'report' => array(
-    'report_name' => 'Mailing Details',
-    'Mailing' => "Mailing $mailingName Webtest",
-                    'Replied' => 'Is equal to Yes'),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: Trackable Replies -' => "Replied")
+        'search' => array(
+          'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+          'Mailing: Trackable Replies -' => "Replied",
         ),
-        'Bounces' =>
-        array(
-          'report' => array('report_name' => 'Mail Bounces', 'Mailing' => "Mailing $mailingName Webtest"),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing Delivery -' => "Bounced")
+      ),
+      'Bounces' => array(
+        'report' => array('report_name' => 'Mail Bounces', 'Mailing' => "Mailing $mailingName Webtest"),
+        'search' => array(
+          'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+          'Mailing Delivery -' => "Bounced",
         ),
-        'Unsubscribe Requests' =>
-        array(
-          'report' => array(
-    'report_name' => 'Mailing Details',
-    'Mailing' => "Mailing $mailingName Webtest",
-                    'Unsubscribed' => 'Is equal to Yes'),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: -' => "Unsubscribe Requests")
+      ),
+      'Unsubscribe Requests' => array(
+        'report' => array(
+          'report_name' => 'Mailing Details',
+          'Mailing' => "Mailing $mailingName Webtest",
+          'Unsubscribed' => 'Is equal to Yes',
         ),
-        'Opt-out Requests' =>
-        array(
-          'report' => array(
-    'report_name' => 'Mailing Details',
-    'Mailing' => "Mailing $mailingName Webtest",
-                    'Opted-out' => 'Is equal to Yes'),
-          'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: -' => "Opt-out Requests")
+        'search' => array(
+          'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+          'Mailing: -' => "Unsubscribe Requests",
         ),
-      );
+      ),
+      'Opt-out Requests' => array(
+        'report' => array(
+          'report_name' => 'Mailing Details',
+          'Mailing' => "Mailing $mailingName Webtest",
+          'Opted-out' => 'Is equal to Yes',
+        ),
+        'search' => array(
+          'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+          'Mailing: -' => "Opt-out Requests",
+        ),
+      ),
+    );
     $this->criteriaCheck($criteriaCheck, $mailingReportUrl);
   }
 
@@ -506,8 +522,8 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
    * @param $mailingReportUrl
    */
   public function criteriaCheck($criteriaCheck, $mailingReportUrl) {
-    foreach($criteriaCheck as $key => $infoFilter) {
-      foreach($infoFilter as $entity => $dataToCheck) {
+    foreach ($criteriaCheck as $key => $infoFilter) {
+      foreach ($infoFilter as $entity => $dataToCheck) {
         $this->open($mailingReportUrl);
         if ($entity == "report") {
           $this->clickLink("xpath=//fieldset/legend[text()='Delivery Summary']/../table//tr[td/a[text()='{$key}']]/descendant::td[3]/span/a[1][text()='Report']");
@@ -515,7 +531,7 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
         else {
           $this->clickLink("xpath=//fieldset/legend[text()='Delivery Summary']/../table//tr[td/a[text()='{$key}']]/descendant::td[3]/span/a[2][text()='Advanced Search']");
         }
-        $this-> _verifyCriteria($key, $dataToCheck, $entity);
+        $this->_verifyCriteria($key, $dataToCheck, $entity);
       }
     }
   }
@@ -526,16 +542,16 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
    * @param $entity
    */
   public function _verifyCriteria($summaryInfo, $dataToCheck, $entity) {
-    foreach($dataToCheck as $key => $value) {
+    foreach ($dataToCheck as $key => $value) {
       if ($entity == 'report') {
         if ($key == 'report_name') {
-          $this->assertElementContainsText('page-title', "{$value}");
+          $this->waitForTextPresent("{$value}");
           continue;
         }
         $this->assertTrue($this->isElementPresent("xpath=//form//div[3]/table/tbody//tr/th[contains(text(),'{$key}')]/../td[contains(text(),'{$value}')]"), "Criteria check for {$key} failed for Report for {$summaryInfo}");
       }
       else {
-        $this->assertElementContainsText('page-title', "Advanced Search");
+        $this->waitForTextPresent("Advanced Search");
         $assertedValue = $this->isElementPresent("xpath=//div[@class='crm-results-block']//div[@class='qill'][contains(text(),'{$key} {$value}')]");
         if (!$assertedValue) {
           $assertedValue = $this->isTextPresent("{$key} {$value}");
@@ -544,4 +560,5 @@ class WebTest_Mailing_MailingTest extends CiviSeleniumTestCase {
       }
     }
   }
+
 }