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_conversations
|
||||||
merge_messages
|
merge_messages
|
||||||
merge_contact_inboxes
|
merge_contact_inboxes
|
||||||
|
merge_contact_notes
|
||||||
merge_and_remove_mergee_contact
|
merge_and_remove_mergee_contact
|
||||||
end
|
end
|
||||||
@base_contact
|
@base_contact
|
||||||
@@ -33,6 +34,10 @@ class ContactMergeAction
|
|||||||
Conversation.where(contact_id: @mergee_contact.id).update(contact_id: @base_contact.id)
|
Conversation.where(contact_id: @mergee_contact.id).update(contact_id: @base_contact.id)
|
||||||
end
|
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
|
def merge_messages
|
||||||
Message.where(sender: @mergee_contact).update(sender: @base_contact)
|
Message.where(sender: @mergee_contact).update(sender: @base_contact)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ describe ContactMergeAction do
|
|||||||
create(:conversation, contact: base_contact)
|
create(:conversation, contact: base_contact)
|
||||||
create(:conversation, contact: mergee_contact)
|
create(:conversation, contact: mergee_contact)
|
||||||
create(:message, sender: mergee_contact)
|
create(:message, sender: mergee_contact)
|
||||||
|
create(:note, contact: mergee_contact, account: mergee_contact.account)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -68,6 +69,17 @@ describe ContactMergeAction do
|
|||||||
end
|
end
|
||||||
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
|
context 'when contacts belong to a different account' do
|
||||||
it 'throws an exception' do
|
it 'throws an exception' do
|
||||||
new_account = create(:account)
|
new_account = create(:account)
|
||||||
|
|||||||
Reference in New Issue
Block a user