Fix Record duplicates multiple contacts contact import exception.
authorDarrick Servis <darrick@davismedia.org>
Sun, 5 Jun 2022 19:36:15 +0000 (12:36 -0700)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 7 Jun 2022 00:23:12 +0000 (12:23 +1200)
Add csv file required for test.

CRM/Contact/Import/Parser/Contact.php
tests/phpunit/CRM/Contact/Import/Form/data/organization_multiple_duplicates_invalid.csv [new file with mode: 0644]
tests/phpunit/CRM/Contact/Import/Parser/ContactTest.php

index 2c4d88ef176420bfeb8a0cfebde5184fe2c77b89..22feff092e7a4c3a8d98e600780bddca9ad282fc 100644 (file)
@@ -1129,7 +1129,8 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         return array_key_last($possibleMatches['values']);
       }
       if (count($possibleMatches['values']) > 1) {
-        throw new CRM_Core_Exception(ts('Record duplicates multiple contacts'));
+        throw new CRM_Core_Exception(ts('Record duplicates multiple contacts: ') . implode(',', array_keys($possibleMatches['values'])), CRM_Import_Parser::ERROR);
+
       }
       return NULL;
     }
diff --git a/tests/phpunit/CRM/Contact/Import/Form/data/organization_multiple_duplicates_invalid.csv b/tests/phpunit/CRM/Contact/Import/Form/data/organization_multiple_duplicates_invalid.csv
new file mode 100644 (file)
index 0000000..5e85bd4
--- /dev/null
@@ -0,0 +1,4 @@
+organization_name,email
+BobCo,
+Cindy,bobco@null.com
+BobCo,bobco@null.com
index ac3216dcbb76e2305c55cddbf640fa4c80a5a380..285b2b0b0a017646bf9eb31151a7443a34722b8e 100644 (file)
@@ -1060,9 +1060,11 @@ class CRM_Contact_Import_Parser_ContactTest extends CiviUnitTestCase {
    * @throws \API_Exception
    * @throws \CRM_Core_Exception
    */
-  public function testImport($csv, $mapper, $expectedError, $expectedOutcomes = []): void {
+  public function testImport($csv, $mapper, $expectedError, $expectedOutcomes = [], $contactType = NULL): void {
     try {
-      $this->importCSV($csv, $mapper);
+      $this->importCSV($csv, $mapper, [
+        'contactType' => $contactType ?? CRM_Import_Parser::CONTACT_INDIVIDUAL,
+      ]);
     }
     catch (CRM_Core_Exception $e) {
       $this->assertSame($expectedError, $e->getMessage());
@@ -1090,6 +1092,16 @@ class CRM_Contact_Import_Parser_ContactTest extends CiviUnitTestCase {
         'expected_error' => '',
         'expected_outcomes' => [CRM_Import_Parser::ERROR => 1],
       ],
+      'organization_multiple_duplicates_invalid' => [
+        'csv' => 'organization_multiple_duplicates_invalid.csv',
+        'mapper' => [['organization_name'], ['email']],
+        'expected_error' => '',
+        'expected_outcomes' => [
+          CRM_Import_Parser::VALID => 2,
+          CRM_Import_Parser::ERROR => 1,
+        ],
+        'contact_type' => CRM_Import_Parser::CONTACT_ORGANIZATION,
+      ],
     ];
   }