Class: RSpec::Sidekiq::Matchers::HaveJobOptions

Inherits:
Object
  • Object
show all
Includes:
JobOptionNormalization
Defined in:
lib/rspec/sidekiq/matchers/have_job_options.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ HaveJobOptions

Returns a new instance of HaveJobOptions.



77
78
79
# File 'lib/rspec/sidekiq/matchers/have_job_options.rb', line 77

def initialize(options)
  @expected_options = normalize_value(options)
end

Instance Method Details

#descriptionObject



81
82
83
# File 'lib/rspec/sidekiq/matchers/have_job_options.rb', line 81

def description
  "have sidekiq options #{formatted(@expected_options)}"
end

#failure_messageObject



106
107
108
109
110
111
# File 'lib/rspec/sidekiq/matchers/have_job_options.rb', line 106

def failure_message
  parts = ["expected #{@klass} to have sidekiq options #{formatted(@expected_options)}"]
  parts << "missing #{formatted(@missing_keys)}" if @missing_keys.any?
  parts << "mismatched #{formatted(@mismatched)}" if @mismatched.any?
  parts.join(" but ")
end

#failure_message_when_negatedObject



113
114
115
# File 'lib/rspec/sidekiq/matchers/have_job_options.rb', line 113

def failure_message_when_negated
  "expected #{@klass} to not have sidekiq options #{formatted(@expected_options)}"
end

#matches?(job) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/rspec/sidekiq/matchers/have_job_options.rb', line 85

def matches?(job)
  @klass = job.is_a?(Class) ? job : job.class
  @options = @klass.get_sidekiq_options
  @missing_keys = []
  @mismatched = {}

  @expected_options.each do |key, value|
    unless @options.key?(key)
      @missing_keys << key
      next
    end

    actual_value = @options[key]
    next if RSpec::Support::FuzzyMatcher.values_match?(value, actual_value)

    @mismatched[key] = actual_value
  end

  @missing_keys.empty? && @mismatched.empty?
end