fix: Update email message_id parsing order (#3073)
Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
@@ -6,6 +6,7 @@ RSpec.describe ApplicationMailbox, type: :mailbox do
|
||||
describe 'route the inbound mail to appropriate mailbox' do
|
||||
let(:welcome_mail) { create_inbound_email_from_fixture('welcome.eml') }
|
||||
let(:reply_mail) { create_inbound_email_from_fixture('reply.eml') }
|
||||
let(:reply_mail_without_uuid) { create_inbound_email_from_fixture('reply.eml') }
|
||||
let(:support_mail) { create_inbound_email_from_fixture('support.eml') }
|
||||
|
||||
describe 'Default' do
|
||||
@@ -24,6 +25,13 @@ RSpec.describe ApplicationMailbox, type: :mailbox do
|
||||
expect(dbl).to receive(:perform_processing).and_return(true)
|
||||
described_class.route reply_mail
|
||||
end
|
||||
|
||||
it 'routes reply emails to Reply Mailbox without uuid' do
|
||||
dbl = double
|
||||
expect(ReplyMailbox).to receive(:new).and_return(dbl)
|
||||
expect(dbl).to receive(:perform_processing).and_return(true)
|
||||
described_class.route reply_mail_without_uuid
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Support' do
|
||||
|
||||
@@ -13,28 +13,55 @@ RSpec.describe ReplyMailbox, type: :mailbox do
|
||||
%w[bcc cc content_type date from html_content in_reply_to message_id multipart number_of_attachments subject text_content to]
|
||||
end
|
||||
|
||||
before do
|
||||
# this UUID is hardcoded in the reply.eml, that's why we are updating this
|
||||
conversation.uuid = '6bdc3f4d-0bec-4515-a284-5d916fdde489'
|
||||
conversation.save
|
||||
context 'with reply uuid present' do
|
||||
before do
|
||||
# this UUID is hardcoded in the reply.eml, that's why we are updating this
|
||||
conversation.uuid = '6bdc3f4d-0bec-4515-a284-5d916fdde489'
|
||||
conversation.save
|
||||
|
||||
described_subject
|
||||
described_subject
|
||||
end
|
||||
|
||||
it 'add the mail content as new message on the conversation' do
|
||||
expect(conversation.messages.last.content).to eq("Let's talk about these images:")
|
||||
end
|
||||
|
||||
it 'add the attachments' do
|
||||
expect(conversation.messages.last.attachments.count).to eq(2)
|
||||
end
|
||||
|
||||
it 'have proper content_attributes with details of email' do
|
||||
expect(conversation.messages.last.content_attributes[:email].keys).to eq(serialized_attributes)
|
||||
end
|
||||
|
||||
it 'set proper content_type' do
|
||||
expect(conversation.messages.last.content_type).to eq('incoming_email')
|
||||
end
|
||||
end
|
||||
|
||||
it 'add the mail content as new message on the conversation' do
|
||||
expect(conversation.messages.last.content).to eq("Let's talk about these images:")
|
||||
end
|
||||
context 'with in reply to email' do
|
||||
let(:reply_mail_without_uuid) { create_inbound_email_from_fixture('reply_mail_without_uuid.eml') }
|
||||
let(:described_subject) { described_class.receive reply_mail_without_uuid }
|
||||
let(:email_channel) { create(:channel_email, email: 'test@example.com', account: account) }
|
||||
let(:conversation_1) do
|
||||
create(
|
||||
:conversation,
|
||||
assignee: agent,
|
||||
inbox: email_channel.inbox,
|
||||
account: account,
|
||||
additional_attributes: { mail_subject: "Discussion: Let's debate these attachments" }
|
||||
)
|
||||
end
|
||||
|
||||
it 'add the attachments' do
|
||||
expect(conversation.messages.last.attachments.count).to eq(2)
|
||||
end
|
||||
before do
|
||||
conversation_1.update!(uuid: '6bdc3f4d-0bec-4515-a284-5d916fdde489')
|
||||
reply_mail_without_uuid.mail['In-Reply-To'] = '<conversation/6bdc3f4d-0bec-4515-a284-5d916fdde489/messages/123@test.com>'
|
||||
end
|
||||
|
||||
it 'have proper content_attributes with details of email' do
|
||||
expect(conversation.messages.last.content_attributes[:email].keys).to eq(serialized_attributes)
|
||||
end
|
||||
|
||||
it 'set proper content_type' do
|
||||
expect(conversation.messages.last.content_type).to eq('incoming_email')
|
||||
it 'find channel with reply to mail' do
|
||||
described_subject
|
||||
expect(conversation_1.messages.last.content).to eq("Let's talk about these images:")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,6 +5,7 @@ RSpec.describe SupportMailbox, type: :mailbox do
|
||||
|
||||
describe 'add mail as a new ticket in the email inbox' do
|
||||
let(:account) { create(:account) }
|
||||
let(:agent) { create(:user, email: 'agent1@example.com', account: account) }
|
||||
let!(:channel_email) { create(:channel_email, account: account) }
|
||||
let(:support_mail) { create_inbound_email_from_fixture('support.eml') }
|
||||
let(:described_subject) { described_class.receive support_mail }
|
||||
@@ -106,5 +107,41 @@ RSpec.describe SupportMailbox, type: :mailbox do
|
||||
expect(conversation.contact.name).to eq(email_sender)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when mail has in reply to email' do
|
||||
let(:reply_mail_without_uuid) { create_inbound_email_from_fixture('reply_mail_without_uuid.eml') }
|
||||
let(:described_subject) { described_class.receive reply_mail_without_uuid }
|
||||
let(:email_channel) { create(:channel_email, email: 'test@example.com', account: account) }
|
||||
|
||||
before do
|
||||
email_channel
|
||||
reply_mail_without_uuid.mail['In-Reply-To'] = 'conversation/6bdc3f4d-0bec-4515-a284-5d916fdde489/messages/123'
|
||||
end
|
||||
|
||||
it 'create channel with reply to mail' do
|
||||
described_subject
|
||||
conversation_1 = Conversation.last
|
||||
|
||||
expect(conversation_1.messages.last.content).to eq("Let's talk about these images:")
|
||||
expect(conversation_1.additional_attributes['in_reply_to']).to eq('conversation/6bdc3f4d-0bec-4515-a284-5d916fdde489/messages/123')
|
||||
end
|
||||
|
||||
it 'append message to email conversation with same in reply to' do
|
||||
described_subject
|
||||
conversation_1 = Conversation.last
|
||||
|
||||
expect(conversation_1.messages.last.content).to eq("Let's talk about these images:")
|
||||
expect(conversation_1.additional_attributes['in_reply_to']).to eq('conversation/6bdc3f4d-0bec-4515-a284-5d916fdde489/messages/123')
|
||||
expect(conversation_1.messages.count).to eq(1)
|
||||
|
||||
reply_mail_without_uuid.mail['In-Reply-To'] = 'conversation/6bdc3f4d-0bec-4515-a284-5d916fdde489/messages/123'
|
||||
|
||||
described_class.receive reply_mail_without_uuid
|
||||
|
||||
expect(conversation_1.messages.last.content).to eq("Let's talk about these images:")
|
||||
expect(conversation_1.additional_attributes['in_reply_to']).to eq('conversation/6bdc3f4d-0bec-4515-a284-5d916fdde489/messages/123')
|
||||
expect(conversation_1.messages.count).to eq(2)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user