Add tests for getDuplicatePairs function
authoreileen <emcnaughton@wikimedia.org>
Wed, 27 Apr 2016 04:10:15 +0000 (16:10 +1200)
committereileen <emcnaughton@wikimedia.org>
Mon, 16 May 2016 22:59:25 +0000 (10:59 +1200)
tests/phpunit/CRM/Dedupe/MergerTest.php

index 185ddec7dd4ebd136cf8afacab19da5ec913c3a4..efa21821e38afd92b257414ff73d3e496e61af66 100644 (file)
@@ -9,6 +9,11 @@ class CRM_Dedupe_MergerTest extends CiviUnitTestCase {
   protected $_groupId;
   protected $_contactIds = array();
 
+  public function tearDown() {
+    $this->quickCleanup(array('civicrm_contact', 'civicrm_group_contact', 'civicrm_group'));
+    parent::tearDown();
+  }
+
   public function createDupeContacts() {
     // create a group to hold contacts, so that dupe checks don't consider any other contacts in the DB
     $params = array(
@@ -288,9 +293,53 @@ class CRM_Dedupe_MergerTest extends CiviUnitTestCase {
         'weight' => 20,
         'canMerge' => TRUE,
       ),
+      1 => array(
+        'srcID' => $this->contacts[2]['id'],
+        'srcName' => 'Mr. Minnie Mouse II',
+        'dstID' => $this->contacts[3]['id'],
+        'dstName' => 'Mr. Minnie Mouse II',
+        'weight' => 20,
+        'canMerge' => TRUE,
+      ),
     ), $pairs);
   }
 
+  /**
+   * Test function that gets duplicate pairs.
+   *
+   * It turns out there are 2 code paths retrieving this data so my initial focus is on ensuring
+   * they match.
+   */
+  public function testGetMatchesInGroup() {
+    $this->setupMatchData();
+
+    $groupID = $this->groupCreate(array('title' => 'she-mice'));
+
+    $this->callAPISuccess('GroupContact', 'create', array('group_id' => $groupID, 'contact_id' => $this->contacts[3]['id']));
+
+    $pairs = CRM_Dedupe_Merger::getDuplicatePairs(
+      1,
+      $groupID,
+      TRUE,
+      25,
+      FALSE
+    );
+
+    $this->assertEquals(array(
+      0 => array(
+        'srcID' => $this->contacts[3]['id'],
+        'srcName' => 'Mr. Minnie Mouse II',
+        'dstID' => $this->contacts[2]['id'],
+        'dstName' => 'Mr. Minnie Mouse II',
+        'weight' => 20,
+        'canMerge' => TRUE,
+      ),
+    ), $pairs);
+  }
+
+  /**
+   * Set up some contacts for our matching.
+   */
   public function setupMatchData() {
     $fixtures = array(
       array(
@@ -308,6 +357,11 @@ class CRM_Dedupe_MergerTest extends CiviUnitTestCase {
         'last_name' => 'Mouse',
         'email' => 'mickey@mouse.com',
       ),
+      array(
+        'first_name' => 'Minnie',
+        'last_name' => 'Mouse',
+        'email' => 'mickey@mouse.com',
+      ),
     );
     foreach ($fixtures as $fixture) {
       $contactID = $this->individualCreate($fixture);