require 'rails_helper' describe ::Campaigns::CampaignConversationBuilder do let(:account) { create(:account) } let(:inbox) { create(:inbox, account: account) } let(:contact) { create(:contact, account: account, identifier: '123') } let(:contact_inbox) { create(:contact_inbox, contact: contact, inbox: inbox) } let(:campaign) { create(:campaign, inbox: inbox, account: account, trigger_rules: { url: 'https://test.com' }) } describe '#perform' do it 'creates a conversation with campaign id and message with campaign message' do campaign_conversation = described_class.new( contact_inbox_id: contact_inbox.id, campaign_display_id: campaign.display_id ).perform expect(campaign_conversation.campaign_id).to eq(campaign.id) expect(campaign_conversation.messages.first.content).to eq(campaign.message) expect(campaign_conversation.messages.first.additional_attributes['campaign_id']).to eq(campaign.id) end it 'will not create a conversation with campaign id if another conversation exists' do create(:conversation, contact_inbox_id: contact_inbox.id, inbox: inbox, account: account) campaign_conversation = described_class.new( contact_inbox_id: contact_inbox.id, campaign_display_id: campaign.display_id ).perform expect(campaign_conversation).to be_nil end end end