From 7e29af1197c23bf2f1a5508a32c1098afff002f2 Mon Sep 17 00:00:00 2001 From: Darrick Servis Date: Sun, 5 Jun 2022 12:36:15 -0700 Subject: [PATCH] Fix Record duplicates multiple contacts contact import exception. Add csv file required for test. --- CRM/Contact/Import/Parser/Contact.php | 3 ++- .../organization_multiple_duplicates_invalid.csv | 4 ++++ .../CRM/Contact/Import/Parser/ContactTest.php | 16 ++++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 tests/phpunit/CRM/Contact/Import/Form/data/organization_multiple_duplicates_invalid.csv diff --git a/CRM/Contact/Import/Parser/Contact.php b/CRM/Contact/Import/Parser/Contact.php index 2c4d88ef17..22feff092e 100644 --- a/CRM/Contact/Import/Parser/Contact.php +++ b/CRM/Contact/Import/Parser/Contact.php @@ -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 index 0000000000..5e85bd4f2f --- /dev/null +++ b/tests/phpunit/CRM/Contact/Import/Form/data/organization_multiple_duplicates_invalid.csv @@ -0,0 +1,4 @@ +organization_name,email +BobCo, +Cindy,bobco@null.com +BobCo,bobco@null.com diff --git a/tests/phpunit/CRM/Contact/Import/Parser/ContactTest.php b/tests/phpunit/CRM/Contact/Import/Parser/ContactTest.php index ac3216dcbb..285b2b0b0a 100644 --- a/tests/phpunit/CRM/Contact/Import/Parser/ContactTest.php +++ b/tests/phpunit/CRM/Contact/Import/Parser/ContactTest.php @@ -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, + ], ]; } -- 2.25.1