fix: Migrate notes when merging the contacts (#8749)
Fixes: https://linear.app/chatwoot/issue/CW-2987/migrate-notes-of-the-secondary-contact-to-primary-contact-when-merging
This commit is contained in:
@@ -12,6 +12,7 @@ class ContactMergeAction
|
||||
merge_conversations
|
||||
merge_messages
|
||||
merge_contact_inboxes
|
||||
merge_contact_notes
|
||||
merge_and_remove_mergee_contact
|
||||
end
|
||||
@base_contact
|
||||
@@ -33,6 +34,10 @@ class ContactMergeAction
|
||||
Conversation.where(contact_id: @mergee_contact.id).update(contact_id: @base_contact.id)
|
||||
end
|
||||
|
||||
def merge_contact_notes
|
||||
Note.where(contact_id: @mergee_contact.id, account_id: @mergee_contact.account_id).update(contact_id: @base_contact.id)
|
||||
end
|
||||
|
||||
def merge_messages
|
||||
Message.where(sender: @mergee_contact).update(sender: @base_contact)
|
||||
end
|
||||
|
||||
@@ -18,6 +18,7 @@ describe ContactMergeAction do
|
||||
create(:conversation, contact: base_contact)
|
||||
create(:conversation, contact: mergee_contact)
|
||||
create(:message, sender: mergee_contact)
|
||||
create(:note, contact: mergee_contact, account: mergee_contact.account)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -68,6 +69,17 @@ describe ContactMergeAction do
|
||||
end
|
||||
end
|
||||
|
||||
context 'when mergee contact has notes' do
|
||||
it 'moves the notes to base contact' do
|
||||
expect(base_contact.notes.count).to be 0
|
||||
expect(mergee_contact.notes.count).to be 2
|
||||
|
||||
contact_merge
|
||||
|
||||
expect(base_contact.reload.notes.count).to be 2
|
||||
end
|
||||
end
|
||||
|
||||
context 'when contacts belong to a different account' do
|
||||
it 'throws an exception' do
|
||||
new_account = create(:account)
|
||||
|
||||
Reference in New Issue
Block a user