Merge pull request #10946 from mattwire/CRM-21037_activity_sendsms_unittests
[civicrm-core.git] / tests / phpunit / api / v3 / MailingTest.php
index 36d970e7bdc70961d864087f93b37a35596b3405..1e506e601df6e006fb1a845ab999ecfa41a3fb36 100644 (file)
@@ -328,7 +328,10 @@ class api_v3_MailingTest extends CiviUnitTestCase {
     $this->assertTrue((bool) preg_match('/Includer Person/', $previewNames[0]), "Name 'Includer Person' should appear in '" . $previewNames[0] . '"');
   }
 
-  public function testMailerPreviewRecipientsDeduplicate() {
+  /**
+   * Test if Mailing recipients include duplicate OR on_hold emails
+   */
+  public function testMailerPreviewRecipientsDeduplicateAndOnholdEmails() {
     // BEGIN SAMPLE DATA
     $groupIDs['grp'] = $this->groupCreate(array('name' => 'Example group', 'title' => 'Example group'));
     $contactIDs['include_me'] = $this->individualCreate(array(
@@ -341,6 +344,21 @@ class api_v3_MailingTest extends CiviUnitTestCase {
         'first_name' => 'IncluderDuplicate',
         'last_name' => 'Person',
       ));
+
+    $contactIDs['include_me_onhold'] = $this->individualCreate(array(
+        'email' => 'onholdinclude.me@example.org',
+        'first_name' => 'Onhold',
+        'last_name' => 'Person',
+      ));
+    $emailId = $this->callAPISuccessGetValue('Email', array(
+      'return' => 'id',
+      'contact_id' => $contactIDs['include_me_onhold'],
+    ));
+    $this->callAPISuccess('Email', 'create', array(
+      'id' => $emailId,
+      'on_hold' => TRUE,
+    ));
+
     $this->callAPISuccess('GroupContact', 'create', array(
         'group_id' => $groupIDs['grp'],
         'contact_id' => $contactIDs['include_me'],
@@ -349,6 +367,10 @@ class api_v3_MailingTest extends CiviUnitTestCase {
         'group_id' => $groupIDs['grp'],
         'contact_id' => $contactIDs['include_me_duplicate'],
       ));
+    $this->callAPISuccess('GroupContact', 'create', array(
+        'group_id' => $groupIDs['grp'],
+        'contact_id' => $contactIDs['include_me_onhold'],
+      ));
 
     $params = $this->_params;
     $params['groups']['include'] = array($groupIDs['grp']);
@@ -368,6 +390,7 @@ class api_v3_MailingTest extends CiviUnitTestCase {
 
     $create = $this->callAPISuccess('Mailing', 'create', $params);
 
+    //Recipient should not contain duplicate or on_hold emails.
     $preview = $create['values'][$create['id']]['api.MailingRecipients.get'];
     $this->assertEquals(1, $preview['count']);
     $previewEmails = array_values(CRM_Utils_Array::collect('api.email.getvalue', $preview['values']));
@@ -662,6 +685,9 @@ SELECT event_queue_id, time_stamp FROM mail_{$type}_temp";
       'Opened' => 20,
       'Unique Clicks' => 0,
       'Unsubscribers' => 20,
+      'delivered_rate' => '80%',
+      'opened_rate' => '25%',
+      'clickthrough_rate' => '0%',
     );
     $this->checkArrayEquals($expectedResult, $result['values'][$mail['id']]);
   }