jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/387870 )
Change subject: Only update contact on email match too
......................................................................
Only update contact on email match too
In case of forwarded emails.
T177663
Change-Id: I797571eeb3d66a40abb59cd43727f33df17ffe40
---
M sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
M sites/all/modules/wmf_civicrm/wmf_civicrm.module
2 files changed, 84 insertions(+), 17 deletions(-)
Approvals:
Mepps: Looks good to me, approved
jenkins-bot: Verified
diff --git a/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
b/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
index a6fb81c..a8eca49 100644
--- a/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
+++ b/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
@@ -687,20 +687,27 @@
}
/**
- * When we get a contact ID and matching hash, update instead of create new
- * @group contactHash
+ * When we get a contact ID and matching hash and email, update instead of
+ * creating new contact.
*/
public function testImportWithContactIdAndHash() {
$existingContact = civicrm_api3('Contact', 'Create', array(
'contact_type' => 'Individual',
'first_name' => 'Test',
- 'last_name' => 'Es' . mt_rand()
+ 'last_name' => 'Es' . mt_rand(),
));
$this->contact_id = $existingContact['id'];
$existingContact = $existingContact['values'][$existingContact['id']];
+ $email = 'booboo' . mt_rand() . '@example.org';
civicrm_api3('Email', 'Create', array(
'contact_id' => $this->contact_id,
- 'email' => 'booboo' . mt_rand() . '@example.org',
+ 'email' => $email,
+ 'location_type_id' => 1,
+ ));
+ civicrm_api3('Address', 'Create', array(
+ 'contact_id' => $this->contact_id,
+ 'country' => wmf_civicrm_get_country_id('FR'),
+ 'street_address' => '777 Trompe L\'Oeil Boulevard',
'location_type_id' => 1,
));
$msg = array(
@@ -709,7 +716,9 @@
'currency' => 'USD',
'date' => '2017-01-01 00:00:00',
'invoice_id' => mt_rand(),
- 'email' => '[email protected]',
+ 'country' => 'US',
+ 'street_address' => '123 42nd St. #321',
+ 'email' => $email,
'gateway' => 'test_gateway',
'gateway_txn_id' => mt_rand(),
'gross' => '1.25',
@@ -717,15 +726,14 @@
);
$contribution = wmf_civicrm_contribution_message_import($msg);
$this->assertEquals($existingContact['id'], $contribution['contact_id']);
- $email = $this->callAPISuccessGetSingle(
- 'Email', array('contact_id' => $existingContact['id'], 'location_type'
=> 1)
+ $address = $this->callAPISuccessGetSingle(
+ 'Address', array('contact_id' => $existingContact['id'], 'location_type'
=> 1)
);
- $this->assertEquals($msg['email'], $email['email']);
+ $this->assertEquals($msg['street_address'], $address['street_address']);
}
/**
* If we get a contact ID and a bad hash, leave the existing contact alone
- * @group contactHash
*/
public function testImportWithContactIdAndBadHash() {
$existingContact = civicrm_api3('Contact', 'Create', array(
@@ -733,11 +741,18 @@
'first_name' => 'Test',
'last_name' => 'Es' . mt_rand()
));
+ $email = 'booboo' . mt_rand() . '@example.org';
$this->contact_id = $existingContact['id'];
$existingContact = $existingContact['values'][$existingContact['id']];
civicrm_api3('Email', 'Create', array(
'contact_id' => $this->contact_id,
- 'email' => 'booboo' . mt_rand() . '@example.org',
+ 'email' => $email,
+ 'location_type_id' => 1,
+ ));
+ civicrm_api3('Address', 'Create', array(
+ 'contact_id' => $this->contact_id,
+ 'country' => wmf_civicrm_get_country_id('FR'),
+ 'street_address' => '777 Trompe L\'Oeil Boulevard',
'location_type_id' => 1,
));
$msg = array(
@@ -747,7 +762,9 @@
'currency' => 'USD',
'date' => '2017-01-01 00:00:00',
'invoice_id' => mt_rand(),
- 'email' => '[email protected]',
+ 'email' => $email,
+ 'country' => 'US',
+ 'street_address' => '123 42nd St. #321',
'gateway' => 'test_gateway',
'gateway_txn_id' => mt_rand(),
'gross' => '1.25',
@@ -755,10 +772,56 @@
);
$contribution = wmf_civicrm_contribution_message_import($msg);
$this->assertNotEquals($existingContact['id'],
$contribution['contact_id']);
- $email = $this->callAPISuccessGetSingle(
- 'Email', array('contact_id' => $existingContact['id'], 'location_type'
=> 1)
+ $address = $this->callAPISuccessGetSingle(
+ 'Address', array('contact_id' => $existingContact['id'], 'location_type'
=> 1)
);
- $this->assertNotEquals($msg['email'], $email['email']);
+ $this->assertNotEquals($msg['street_address'], $address['street_address']);
+ }
+
+ /**
+ * If we get a contact ID and a bad email, leave the existing contact alone
+ */
+ public function testImportWithContactIdAndBadEmail() {
+ $existingContact = civicrm_api3('Contact', 'Create', array(
+ 'contact_type' => 'Individual',
+ 'first_name' => 'Test',
+ 'last_name' => 'Es' . mt_rand()
+ ));
+ $email = 'booboo' . mt_rand() . '@example.org';
+ $this->contact_id = $existingContact['id'];
+ $existingContact = $existingContact['values'][$existingContact['id']];
+ civicrm_api3('Email', 'Create', array(
+ 'contact_id' => $this->contact_id,
+ 'email' => $email,
+ 'location_type_id' => 1,
+ ));
+ civicrm_api3('Address', 'Create', array(
+ 'contact_id' => $this->contact_id,
+ 'country' => wmf_civicrm_get_country_id('FR'),
+ 'street_address' => '777 Trompe L\'Oeil Boulevard',
+ 'location_type_id' => 1,
+ ));
+ $msg = array(
+ 'contact_id' => $existingContact['id'],
+ 'first_name' => 'Lex',
+ 'contact_hash' => $existingContact['hash'],
+ 'currency' => 'USD',
+ 'date' => '2017-01-01 00:00:00',
+ 'invoice_id' => mt_rand(),
+ 'email' => '[email protected]',
+ 'country' => 'US',
+ 'street_address' => '123 42nd St. #321',
+ 'gateway' => 'test_gateway',
+ 'gateway_txn_id' => mt_rand(),
+ 'gross' => '1.25',
+ 'payment_method' => 'cc',
+ );
+ $contribution = wmf_civicrm_contribution_message_import($msg);
+ $this->assertNotEquals($existingContact['id'],
$contribution['contact_id']);
+ $address = $this->callAPISuccessGetSingle(
+ 'Address', array('contact_id' => $existingContact['id'], 'location_type'
=> 1)
+ );
+ $this->assertNotEquals($msg['street_address'], $address['street_address']);
}
/**
diff --git a/sites/all/modules/wmf_civicrm/wmf_civicrm.module
b/sites/all/modules/wmf_civicrm/wmf_civicrm.module
index 2326ac1..af0ed20 100644
--- a/sites/all/modules/wmf_civicrm/wmf_civicrm.module
+++ b/sites/all/modules/wmf_civicrm/wmf_civicrm.module
@@ -227,11 +227,15 @@
// the hash before using the existing contact.
$existing = civicrm_api3('Contact', 'getSingle', array(
'id' => $msg['contact_id'],
- 'return' => 'hash'
+ 'return' => array('hash', 'email')
));
- // If the contact doesn't exist, or the hash doesn't match, make it
+ // If the contact doesn't exist, or the hash or email doesn't match,
make it
// look like it's a new-donor message.
- if (!$existing || $existing['hash'] !== $msg['contact_hash']) {
+ if (
+ !$existing ||
+ $existing['hash'] !== $msg['contact_hash'] ||
+ $existing['email'] !== $msg['email']
+ ) {
$msg['contact_id'] = null;
unset($msg['contact_hash']);
}
--
To view, visit https://gerrit.wikimedia.org/r/387870
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I797571eeb3d66a40abb59cd43727f33df17ffe40
Gerrit-PatchSet: 2
Gerrit-Project: wikimedia/fundraising/crm
Gerrit-Branch: master
Gerrit-Owner: Ejegg <[email protected]>
Gerrit-Reviewer: AndyRussG <[email protected]>
Gerrit-Reviewer: Cdentinger <[email protected]>
Gerrit-Reviewer: Eileen <[email protected]>
Gerrit-Reviewer: Jgleeson <[email protected]>
Gerrit-Reviewer: Katie Horn <[email protected]>
Gerrit-Reviewer: Mepps <[email protected]>
Gerrit-Reviewer: XenoRyet <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits