Sha256: 022a2f165e4309795588f6b2e42b98611f1a61a70fcc27e178333220e807cc9f

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

module RSpec
  module Sidekiq
    module Matchers
      def be_retryable expected_retry
        BeRetryable.new expected_retry
      end

      class BeRetryable
        def initialize expected_retry
          @expected_retry = expected_retry
        end

        def description
          if @expected_retry.is_a?(Fixnum)
            "retry #{@expected_retry} times"          # retry: 5
          elsif @expected_retry
            "retry the default number of times" # retry: true
          else
            "not retry"                         # retry: false
          end
        end

        def failure_message
          "expected #{@klass} to #{description} but got #{@actual}"
        end

        def matches? job
          @klass = job.kind_of?(Class) ? job : job.class
          @actual = @klass.get_sidekiq_options["retry"]
          @actual == @expected_retry
        end

        def negative_failure_message
          "expected #{@klass} to not #{description}".gsub "not not ", ""
        end
        alias_method :failure_message_when_negated, :negative_failure_message
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rspec-sidekiq-1.1.0 lib/rspec/sidekiq/matchers/be_retryable.rb