CRM-16103 fix - CiviMailing status is not updating
authormonishdeb <monish.deb@webaccessglobal.com>
Thu, 19 Mar 2015 15:16:44 +0000 (20:46 +0530)
committermonishdeb <monish.deb@webaccessglobal.com>
Fri, 20 Mar 2015 16:27:43 +0000 (21:57 +0530)
https://issues.civicrm.org/jira/browse/CRM-16103

js/angular-crm-util.js
js/angular-crmMailing/services.js
js/angular-crmMailingAB/directives.js
js/angular-crmMailingAB/services.js
tests/phpunit/WebTest/Mailing/MailingTest.php

index 3a1a8fd54ff177827d12d023028c6dbe7c0deb58..f64292762bdb1f21d01a01e6aeacd5375c599224 100644 (file)
     };
   }]);
 
-  angular.module('crmUtil').factory('crmNow', function($q){
-    // FIXME: surely there's already some helper which can do this in one line?
-    // @return string "YYYY-MM-DD hh:mm:ss"
-    return function crmNow() {
-      var currentdate = new Date();
-      var yyyy = currentdate.getFullYear();
-      var mm = currentdate.getMonth() + 1;
-      mm = mm < 10 ? '0' + mm : mm;
-      var dd = currentdate.getDate();
-      dd = dd < 10 ? '0' + dd : dd;
-      var hh = currentdate.getHours();
-      hh = hh < 10 ? '0' + hh : hh;
-      var min = currentdate.getMinutes();
-      min = min < 10 ? '0' + min : min;
-      var sec = currentdate.getSeconds();
-      sec = sec < 10 ? '0' + sec : sec;
-      return yyyy + "-" + mm + "-" + dd + " " + hh + ":" + min + ":" + sec;
-    };
-  });
-
   // Adapter for CRM.status which supports Angular promises (instead of jQuery promises)
   // example: crmStatus('Saving', crmApi(...)).then(function(result){...})
   angular.module('crmUtil').factory('crmStatus', function($q){
index cca3255b7ac7c85945870e418586626a667235bf..b9a46965a352da3cb8c1eecf0dfd40ba28884ef0 100644 (file)
@@ -97,7 +97,7 @@
   });
 
   // The crmMailingMgr service provides business logic for loading, saving, previewing, etc
-  angular.module('crmMailing').factory('crmMailingMgr', function ($q, crmApi, crmFromAddresses, crmNow) {
+  angular.module('crmMailing').factory('crmMailingMgr', function ($q, crmApi, crmFromAddresses) {
     var pickDefaultMailComponent = function pickDefaultMailComponent(type) {
       var mcs = _.where(CRM.crmMailing.headerfooterList, {
         component_type: type,
         var crmMailingMgr = this;
         var params = {
           id: mailing.id,
-          approval_date: crmNow(),
-          scheduled_date: mailing.scheduled_date ? mailing.scheduled_date : crmNow()
+          approval_date: 'now',
+          scheduled_date: mailing.scheduled_date ? mailing.scheduled_date : 'now'
         };
         return crmApi('Mailing', 'submit', params)
           .then(function (result) {
index d5f170c58f7ee0100ca54d95d16f02fd2add047e..663d370d8af6bd10c8f63bfe148f3d2f7338aae5 100644 (file)
@@ -95,7 +95,7 @@
   //  - criteria: string
   //  - target_date: string, date
   //  - target_url: string
-  angular.module('crmMailingAB').directive('crmMailingAbStats', function (crmApi, $parse, crmNow) {
+  angular.module('crmMailingAB').directive('crmMailingAbStats', function (crmApi, $parse) {
     return {
       scope: {
         crmMailingAbStats: '@',
 
         scope.$watch(attrs.crmAbtest, refresh);
         function refresh() {
-          var now = crmNow();
           var abtest = abtestModel(scope.$parent);
           if (!abtest) {
             console.log('failed to draw stats - missing abtest');
           for (var i = 1; i <= options.split_count; i++) {
             var result = crmApi('MailingAB', 'graph_stats', {
               id: abtest.ab.id,
-              target_date: abtest.ab.declare_winning_time ? abtest.ab.declare_winning_time : now,
+              target_date: abtest.ab.declare_winning_time ? abtest.ab.declare_winning_time : 'now',
               target_url: null, // FIXME
               criteria: options.criteria,
               split_count: options.split_count,
index bc91d6968a60aab8c11dc270e8d5e9d38592e7e2..447909c4a30d9956c6bb10c9dffd0dfe30bd767c 100644 (file)
@@ -42,7 +42,7 @@
   //   abtest.load().then(function(){
   //     alert("Mailing A is named "+abtest.mailings.a.name);
   //   });
-  angular.module('crmMailingAB').factory('CrmMailingAB', function (crmApi, crmMailingMgr, $q, CrmAttachments, crmNow) {
+  angular.module('crmMailingAB').factory('CrmMailingAB', function (crmApi, crmMailingMgr, $q, CrmAttachments) {
     function CrmMailingAB(id) {
       this.id = id;
       this.mailings = {};
         var params = {
           id: this.ab.id,
           status: 'Testing',
-          approval_date: crmNow(),
-          scheduled_date: this.mailings.a.scheduled_date ? this.mailings.a.scheduled_date : crmNow()
+          approval_date: 'now',
+          scheduled_date: this.mailings.a.scheduled_date ? this.mailings.a.scheduled_date : 'now'
         };
         return crmApi('MailingAB', 'submit', params)
           .then(function () {
         var params = {
           id: this.ab.id,
           status: 'Final',
-          approval_date: crmNow(),
-          scheduled_date: this.mailings.c.scheduled_date ? this.mailings.c.scheduled_date : crmNow()
+          approval_date: 'now',
+          scheduled_date: this.mailings.c.scheduled_date ? this.mailings.c.scheduled_date : 'now'
         };
         return crmApi('MailingAB', 'submit', params)
           .then(function () {
index 6decfa202af2c280064744c3d88327f28608066c..a49ac732ac726a6f9e70be42b124ae431a0c434a 100644 (file)
@@ -78,60 +78,70 @@ 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");
+    $this->select2("s2id_crmUiId_8", $groupName, TRUE);
 
-    // click next
-    $this->clickLink("_qf_Group_next", "_qf_Settings_cancel", FALSE);
+    // do check count for Recipient
+    $this->waitForTextPresent("~1 recipient");
 
-    //--------track and respond----------
+    // fill subject for mailing
+    $this->type("xpath=//input[@name='subject']", "Test subject {$mailingName} for Webtest");
 
-    // check for default settings options
-    $this->assertChecked("url_tracking");
-    $this->assertChecked("open_tracking");
+    // HTML format message
+    $HTMLMessage = "This is HTML formatted content for Mailing {$mailingName} Webtest.";
+    $this->fillRichTextField("crmUiId_1", $HTMLMessage);
 
-    // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+    $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as HTML']");
+    $this->waitForTextPresent($HTMLMessage);
+    $this->waitForAjaxContent();
+    $this->click("xpath=//button[@title='Close']");
 
-    // no need tracking for this test
+    // Open Plain-text Format pane and type text format msg
+    $this->click("//div[text()='Plain Text']");
+    $this->type("xpath=//*[@name='body_text']", "This is text formatted content for Mailing {$mailingName} Webtest.");
 
-    // click next with default settings
-    $this->clickLink("_qf_Settings_next", "_qf_Upload_cancel");
+    $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']");
 
-    //--------Mailing content------------
-    // let from email address be default
+    // select default header and footer ( with label )
+    $this->click("xpath=//ul/li/a[text()='Header and Footer']");
+    $this->select2("s2id_crmUiId_10", "Mailing Header");
+    $this->select2("s2id_crmUiId_11", "Mailing Footer");
 
-    // fill subject for mailing
-    $this->type("subject", "Test subject {$mailingName} for Webtest");
+    //--------track and respond----------
 
-    // check for default option enabled
-    $this->assertChecked("CIVICRM_QFID_1_upload_type");
+    // check for default settings options
+    $this->click("xpath=//ul/li/a[text()='Tracking']");
+    $this->assertChecked("url_tracking");
+    $this->assertChecked("open_tracking");
 
-    // HTML format message
-    $HTMLMessage = "This is HTML formatted content for Mailing {$mailingName} Webtest.";
-    $this->fillRichTextField("html_message", $HTMLMessage);
+    // click next with default settings
+    $this->click("xpath=//div[@class='crm-wizard-buttons']/button[text()='Next']");
 
-    // 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->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)");
 
-    // select default header and footer ( with label )
-    $this->select("header_id", "label=Mailing Header");
-    $this->select("footer_id", "label=Mailing Footer");
+    //----------Schedule or Send------------
 
-    // do check count for Recipient
-    $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+    // 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 +160,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,7 +207,7 @@ 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"));