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:
Pranav Raj S
2024-01-19 22:32:18 -08:00
committed by GitHub
parent 8e15ada164
commit a8f053921b
2 changed files with 17 additions and 0 deletions

View File

@@ -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

View File

@@ -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)