diff --git a/app/actions/contact_merge_action.rb b/app/actions/contact_merge_action.rb index 9d58ef207..650dbe89f 100644 --- a/app/actions/contact_merge_action.rb +++ b/app/actions/contact_merge_action.rb @@ -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 diff --git a/spec/actions/contact_merge_action_spec.rb b/spec/actions/contact_merge_action_spec.rb index de207498a..7cd4c71fe 100644 --- a/spec/actions/contact_merge_action_spec.rb +++ b/spec/actions/contact_merge_action_spec.rb @@ -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)