Add unit test improvements to support testing dev/core#397
authoreileen <emcnaughton@wikimedia.org>
Thu, 29 Nov 2018 23:14:32 +0000 (12:14 +1300)
committereileen <emcnaughton@wikimedia.org>
Thu, 29 Nov 2018 23:14:32 +0000 (12:14 +1300)
I have marked the test incomplete as we get a fatal error on the actual test for #397
(with or without the proposed fix) but I think if we merge this it makes it easy to complete
#397

CRM/Dedupe/BAO/RuleGroup.php
tests/phpunit/CRM/Dedupe/DedupeFinderTest.php

index dda5bad13635fb55c36a2895b2c4a1b403e52ab9..161b8175a1e1383f06952469a25eba02d98cdbdd 100644 (file)
@@ -282,7 +282,6 @@ class CRM_Dedupe_BAO_RuleGroup extends CRM_Dedupe_DAO_RuleGroup {
         if ($dao->affectedRows() >= 1) {
           $exclWeightSum[] = substr($fieldWeight, strrpos($fieldWeight, '.') + 1);
         }
-        $dao->free();
       }
       else {
         // its a die situation
index 97234c9ef4392521745cdcade9ab2eab05428814..947e52f831bbb53103a46c4a454674baff86971f 100644 (file)
@@ -58,6 +58,11 @@ class CRM_Dedupe_DedupeFinderTest extends CiviUnitTestCase {
     $this->assertEquals(count($foundDupes), 3, 'Check Individual-Fuzzy dupe rule for dupesInGroup().');
   }
 
+  /**
+   * Test that a rule set to is_reserved = 0 works.
+   *
+   * There is a different search used dependent on this variable.
+   */
   public function testCustomRule() {
     $this->setupForGroupDedupe();
 
@@ -69,8 +74,9 @@ class CRM_Dedupe_DedupeFinderTest extends CiviUnitTestCase {
       'title' => 'TestRule',
       'is_reserved' => 0,
     ));
-    foreach (array('first_name', 'last_name') as $field) {
-      $this->callAPISuccess('Rule', 'create', [
+    $rules = [];
+    foreach (array('birth_date', 'first_name', 'last_name') as $field) {
+      $rules[$field] = $this->callAPISuccess('Rule', 'create', [
         'dedupe_rule_group_id' => $ruleGroup['id'],
         'rule_table' => 'civicrm_contact',
         'rule_weight' => 4,
@@ -79,6 +85,9 @@ class CRM_Dedupe_DedupeFinderTest extends CiviUnitTestCase {
     }
     $foundDupes = CRM_Dedupe_Finder::dupesInGroup($ruleGroup['id'], $this->groupID);
     $this->assertEquals(count($foundDupes), 4);
+    $this->markTestIncomplete('This currenctly fails - see https://lab.civicrm.org/dev/core/issues/397');
+    CRM_Dedupe_Finder::dupes($ruleGroup['id']);
+
   }
 
   /**
@@ -216,12 +225,14 @@ class CRM_Dedupe_DedupeFinderTest extends CiviUnitTestCase {
         'last_name' => 'hood',
         'email' => 'robin@example.com',
         'contact_type' => 'Individual',
+        'birth_date' => '2016-01-01',
       ),
       array(
         'first_name' => 'robin',
         'last_name' => 'hood',
         'email' => 'hood@example.com',
         'contact_type' => 'Individual',
+        'birth_date' => '2016-01-01',
       ),
       array(
         'first_name' => 'robin',