From d3312ed5ec38970bab3c68f94a5a724b2698a677 Mon Sep 17 00:00:00 2001 From: monishdeb Date: Thu, 19 Mar 2015 20:46:44 +0530 Subject: [PATCH] CRM-16103 fix - CiviMailing status is not updating https://issues.civicrm.org/jira/browse/CRM-16103 --- js/angular-crm-util.js | 20 ---- js/angular-crmMailing/services.js | 6 +- js/angular-crmMailingAB/directives.js | 5 +- js/angular-crmMailingAB/services.js | 10 +- tests/phpunit/WebTest/Mailing/MailingTest.php | 95 +++++++++---------- 5 files changed, 54 insertions(+), 82 deletions(-) diff --git a/js/angular-crm-util.js b/js/angular-crm-util.js index 3a1a8fd54f..f64292762b 100644 --- a/js/angular-crm-util.js +++ b/js/angular-crm-util.js @@ -193,26 +193,6 @@ }; }]); - 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){ diff --git a/js/angular-crmMailing/services.js b/js/angular-crmMailing/services.js index cca3255b7a..b9a46965a3 100644 --- a/js/angular-crmMailing/services.js +++ b/js/angular-crmMailing/services.js @@ -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, @@ -346,8 +346,8 @@ 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) { diff --git a/js/angular-crmMailingAB/directives.js b/js/angular-crmMailingAB/directives.js index d5f170c58f..663d370d8a 100644 --- a/js/angular-crmMailingAB/directives.js +++ b/js/angular-crmMailingAB/directives.js @@ -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: '@', @@ -112,7 +112,6 @@ 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'); @@ -131,7 +130,7 @@ 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, diff --git a/js/angular-crmMailingAB/services.js b/js/angular-crmMailingAB/services.js index bc91d6968a..447909c4a3 100644 --- a/js/angular-crmMailingAB/services.js +++ b/js/angular-crmMailingAB/services.js @@ -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 = {}; @@ -136,8 +136,8 @@ 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 () { @@ -152,8 +152,8 @@ 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 () { diff --git a/tests/phpunit/WebTest/Mailing/MailingTest.php b/tests/phpunit/WebTest/Mailing/MailingTest.php index 6decfa202a..a49ac732ac 100644 --- a/tests/phpunit/WebTest/Mailing/MailingTest.php +++ b/tests/phpunit/WebTest/Mailing/MailingTest.php @@ -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")); -- 2.25.1