97 lines
3.4 KiB
Ruby
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 |