Class: RuboCop::Cop::Ezcater::RspecMatchOrderedArray

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Defined in:
lib/rubocop/cop/ezcater/rspec_match_ordered_array.rb

Overview

Enforce use of ‘match_ordered_array` matcher instead of using `eq` matcher

Examples:


# good
expect(foo).to match_ordered_array([1, 2, 3])
expect(foo).to match_ordered_array [1, 2, 3]

# bad
expect(foo).to eq([1, 2, 3])
expect(foo).to eq [1, 2, 3]

Constant Summary collapse

MATCH_ORDERED_ARRAY =
"match_ordered_array"
MSG =
"Use the `match_ordered_array` matcher from ezcater_matchers gem "\
"instead of `eq` when comparing collections"

Instance Method Summary collapse

Instance Method Details

#on_send(node) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/rubocop/cop/ezcater/rspec_match_ordered_array.rb', line 28

def on_send(node)
  eq_array(node) do
    add_offense(node.loc.expression, message: MSG) do |corrector|
      corrector.replace(
        Parser::Source::Range.new(
          node.source_range.source_buffer,
          node.source_range.begin_pos,
          node.source_range.begin_pos + 2
        ),
        MATCH_ORDERED_ARRAY
      )
    end
  end
end