require "bot/rspec/syntax.rb"
require "bot/rspec/matchers.rb"
require "bot/rspec/fixnum_helper.rb"

module Bot
  module Rspec
    include Syntax
    include Matchers

    Fixnum.send(:include, FixnumHelper)

    def self.included(base)
      if base.metadata[:type] == :responder
        base.let(:username) { "user" } unless base.respond_to? :username
        base.let(:user) { create(:user) } unless base.respond_to? :user
        base.let(:message) { incoming_message(user.username) } unless base.respond_to? :message
        base.let(:handler) { class_double("Handler") } unless base.respond_to? :handler
        base.let(:responses) { [] } unless base.respond_to? :responses
        base.let(:responder) { base.described_class.new(message, user, responses, handler) } unless base.respond_to? :responder
      end
    end
  end
end