Sha256: be7f2c1bb8c216f38399fa5744501c12c56d0f7571893a3cee28450d4bb65385
Contents?: true
Size: 1.38 KB
Versions: 4
Compression:
Stored size: 1.38 KB
Contents
require 'rspec/expectations' RSpec::Matchers.define :respond_with_slack_messages do |expected| include SlackRubyBot::SpecHelpers match do |actual| raise ArgumentError, 'respond_with_slack_messages expects an array of ordered responses' unless expected.respond_to? :each client = respond_to?(:client) ? send(:client) : SlackRubyBot::Client.new def client.test_messages @test_received_messages end def client.say(options = {}) super @test_received_messages = @test_received_messages.nil? ? [] : @test_received_messages @test_received_messages.push options end message_command = SlackRubyBot::Hooks::Message.new channel, user, message, attachments = parse(actual) allow(Giphy).to receive(:random) if defined?(Giphy) allow(client).to receive(:message) message_command.call(client, Hashie::Mash.new(text: message, channel: channel, user: user, attachments: attachments)) @messages = client.test_messages @responses = [] expected.each do |exp| @responses.push(expect(client).to(have_received(:message).with(hash_including(channel: channel, text: exp)).once)) end true end failure_message do |_actual| message = '' expected.each do |exp| message += "Expected text: #{exp}, got #{@messages[expected.index(exp)] || 'No Response'}\n" unless @responses[expected.index(exp)] end message end end
Version data entries
4 entries across 4 versions & 1 rubygems