Files
chatwoot/spec/models/concerns/linear_activity_message_handler_spec.rb

97 lines
3.4 KiB
Ruby

require 'rails_helper'
RSpec.describe LinearActivityMessageHandler, type: :model do
let(:account) { create(:account) }
let(:inbox) { create(:inbox, account: account) }
let(:conversation) { create(:conversation, account: account, inbox: inbox) }
describe '#create_linear_issue_created_activity' do
it 'enqueues an activity message job when issue data contains id' do
issue_data = { id: 'ENG-123' }
expect do
conversation.create_linear_issue_created_activity(issue_data)
end.to have_enqueued_job(Conversations::ActivityMessageJob)
.with(conversation, {
account_id: conversation.account_id,
inbox_id: conversation.inbox_id,
message_type: :activity,
content: 'New Linear issue ENG-123 has been created'
})
end
it 'does not enqueue job when issue data lacks id' do
issue_data = { title: 'Some issue' }
expect do
conversation.create_linear_issue_created_activity(issue_data)
end.not_to have_enqueued_job(Conversations::ActivityMessageJob)
end
it 'does not enqueue job when issue_data is empty' do
expect do
conversation.create_linear_issue_created_activity({})
end.not_to have_enqueued_job(Conversations::ActivityMessageJob)
end
end
describe '#create_linear_issue_linked_activity' do
it 'enqueues an activity message job when issue data contains id' do
issue_data = { id: 'ENG-456' }
expect do
conversation.create_linear_issue_linked_activity(issue_data)
end.to have_enqueued_job(Conversations::ActivityMessageJob)
.with(conversation, {
account_id: conversation.account_id,
inbox_id: conversation.inbox_id,
message_type: :activity,
content: 'Linear issue ENG-456 is now linked'
})
end
it 'does not enqueue job when issue data lacks id' do
issue_data = { title: 'Some issue' }
expect do
conversation.create_linear_issue_linked_activity(issue_data)
end.not_to have_enqueued_job(Conversations::ActivityMessageJob)
end
it 'does not enqueue job when issue_data is empty' do
expect do
conversation.create_linear_issue_linked_activity({})
end.not_to have_enqueued_job(Conversations::ActivityMessageJob)
end
end
describe '#create_linear_issue_unlinked_activity' do
it 'enqueues an activity message job when issue data contains id' do
issue_data = { id: 'ENG-789' }
expect do
conversation.create_linear_issue_unlinked_activity(issue_data)
end.to have_enqueued_job(Conversations::ActivityMessageJob)
.with(conversation, {
account_id: conversation.account_id,
inbox_id: conversation.inbox_id,
message_type: :activity,
content: 'Linear issue ENG-789 has been unlinked'
})
end
it 'does not enqueue job when issue data lacks id' do
issue_data = { title: 'Some issue' }
expect do
conversation.create_linear_issue_unlinked_activity(issue_data)
end.not_to have_enqueued_job(Conversations::ActivityMessageJob)
end
it 'does not enqueue job when issue_data is empty' do
expect do
conversation.create_linear_issue_unlinked_activity({})
end.not_to have_enqueued_job(Conversations::ActivityMessageJob)
end
end
end