require 'rails_helper'

describe Integrations::Slack::SendOnSlackService do
  let(:account) { create(:account) }
  let!(:inbox) { create(:inbox, account: account) }
  let!(:contact) { create(:contact) }

  let!(:hook) { create(:integrations_hook, account: account) }
  let!(:conversation) { create(:conversation, account: account, inbox: inbox, contact: contact) }
  let!(:message) { create(:message, account: account, inbox: inbox, conversation: conversation) }

  describe '#perform' do
    it 'sent message to slack' do
      builder = described_class.new(message: message, hook: hook)
      stub_request(:post, 'https://slack.com/api/chat.postMessage')
        .to_return(status: 200, body: '', headers: {})
      slack_client = double
      expect(builder).to receive(:slack_client).and_return(slack_client)

      expect(slack_client).to receive(:chat_postMessage).with(
        channel: hook.reference_id,
        text: message.content,
        username: "Contact: #{message.sender.name}",
        thread_ts: conversation.identifier,
        icon_url: anything
      )

      builder.perform
    end
  end
end
