CRM-20858: Add Failing Tests to Verify Merging of Custom Fields
authorCamilo Rodriguez <camilo@compucorp.co.uk>
Tue, 8 Aug 2017 21:45:48 +0000 (21:45 +0000)
committerCamilo Rodriguez <camilo@compucorp.co.uk>
Wed, 9 Aug 2017 14:15:58 +0000 (14:15 +0000)
commitdba77ae8876d837fe9c9d1a256ad243598f6ce9b
treed1aecd543c22222b57e302fea055cec53c08bce0
parent4651a59c2eee20e856cdc80604cfe3fba99187e5
CRM-20858: Add Failing Tests to Verify Merging of Custom Fields

If a contact that has values stored in a custom group table is merged into a
contact that doesn't have a record in that table, all values in the source
target will be merged into the target contact, even if those values were
not explicity selected to the merge operation.

The merging operation updates all database references from the source contact
to the target contact on all tables. When the target contact has a record on
a custom group table, this update will fail, since the table's configuration
enforces the entity_id (the reference to the contacts table) to be unique.
However, when the target contact has no record on that custom group table, the
source contact does have a record and the merge is performed, the original
record will be updated to reference the target contact, and hence inherit ALL
values of the source contact, even if none of the values were selected to be
merged.

Added two tests, the first one to verify that merging a contact with a record
on a custom group table does not merge its values into a target contact with
no record in the custom group table; the second one to check that if only some
fields of a custom group table are selected to be merged, only those values
are copied, leaving all others unset.
tests/phpunit/CRM/Dedupe/MergerTest.php [changed mode: 0644->0755]