Sha256: 5bf2acddaa88bfefb27cb5f2826ac30769c28f601022239d60b2d7d1950e5b0b

Contents?: true

Size: 1.43 KB

Versions: 24

Compression:

Stored size: 1.43 KB

Contents

module Lita
  module RSpec
    module Matchers
      # RSpec matchers for chat routes.
      # @since 4.0.0
      module ChatRouteMatcher
        extend ::RSpec::Matchers::DSL

        matcher :route do |message_body|
          match do
            message = Message.new(robot, message_body, source)

            if defined?(@group) and @group.to_s.downcase == "admins"
              robot.config.robot.admins = Array(robot.config.robot.admins) + [source.user.id]
            elsif defined?(@group)
              robot.auth.add_user_to_group!(source.user, @group)
            end

            matching_routes = described_class.routes.select do |route|
              RouteValidator.new(described_class, route, message, robot).call
            end

            if defined?(@method_name)
              matching_routes.any? { |route| route.callback.method_name == @method_name }
            else
              !matching_routes.empty?
            end
          end

          chain :with_authorization_for do |group|
            @group = group
          end

          chain :to do |method_name|
            @method_name = method_name
          end
        end

        # Sets an expectation that the provided message routes to a command.
        # @param message_body [String] The body of the message.
        # @return [void]
        def route_command(message_body)
          route("#{robot.mention_name} #{message_body}")
        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
lita-4.8.0 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.8.0.beta1 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.7.1 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.7.0 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.6.1 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.6.0 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.5.0 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.4.3 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.4.2 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.4.1 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.4.0 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.3.2 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.3.1 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.3.0 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.2.1 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.2.0 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.1.0 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.0.4 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.0.3 lib/lita/rspec/matchers/chat_route_matcher.rb
lita-4.0.2 lib/lita/rspec/matchers/chat_route_matcher.rb