CRM-19148 - added test testBatchMergeEmailOnHold.
authorDave Jenkins <davej+git@circle-interactive.co.uk>
Thu, 13 Oct 2016 14:01:46 +0000 (15:01 +0100)
committerDave Jenkins <davej+git@circle-interactive.co.uk>
Thu, 13 Oct 2016 14:01:46 +0000 (15:01 +0100)
tests/phpunit/api/v3/JobTest.php

index a77b668e53025600d2b44555500b9bca7d91abfc..d916b57d0959bc3c5863b68c0641ae8d3bb541f8 100644 (file)
@@ -726,6 +726,50 @@ class api_v3_JobTest extends CiviUnitTestCase {
     ), 4);
   }
 
+  /**
+   * Test the batch merge respects email "on hold".
+   *
+   * Test CRM-19148, Batch merge - Email on hold data lost when there is a conflict.
+   *
+   * @dataProvider getOnHoldSets
+   *
+   * @param
+   */
+  public function testBatchMergeEmailOnHold($onHold1, $onHold2, $merge) {
+    $contactID1 = $this->individualCreate(array(
+      'api.email.create' => array(
+        'email' => 'batman@gotham.met',
+        'location_type_id' => 'Work',
+        'is_primary' => 1,
+        'on_hold' => $onHold1,
+      ),
+    ));
+    $contactID2 = $this->individualCreate(array(
+      'api.email.create' => array(
+        'email' => 'batman@gotham.met',
+        'location_type_id' => 'Work',
+        'is_primary' => 1,
+        'on_hold' => $onHold2,
+      ),
+    ));
+    $result = $this->callAPISuccess('Job', 'process_batch_merge', array());
+    $this->assertEquals($merge, count($result['values']['merged']));
+  }
+
+  /**
+   * Data provider for testBatchMergeEmailOnHold: combinations of on_hold & expected outcomes.
+   */
+  public function getOnHoldSets() {
+    // Each row specifies: contact 1 on_hold, contact 2 on_hold, merge? (0 or 1),
+    $sets = array(
+      array(0, 0, 1),
+      array(0, 1, 0),
+      array(1, 0, 0),
+      array(1, 1, 1),
+    );
+    return $sets;
+  }
+
   /**
    * Test the batch merge does not fatal on an empty rule.
    *