Class: RuboCop::Cop::RSpec::Dialect
- Extended by:
- AutoCorrector
- Includes:
- MethodPreference
- Defined in:
- lib/rubocop/cop/rspec/dialect.rb
Overview
Enforces custom RSpec dialects.
A dialect can be based on the following RSpec methods:
-
describe, context, feature, example_group
-
xdescribe, xcontext, xfeature
-
fdescribe, fcontext, ffeature
-
shared_examples, shared_examples_for, shared_context
-
it, specify, example, scenario, its
-
fit, fspecify, fexample, fscenario, focus
-
xit, xspecify, xexample, xscenario, skip
-
pending
-
prepend_before, before, append_before,
-
around
-
prepend_after, after, append_after
-
let, let!
-
subject, subject!
-
expect, is_expected, expect_any_instance_of
By default all of the RSpec methods and aliases are allowed. By setting a config like:
RSpec/Dialect:
PreferredMethods:
context: describe
You can expect the following behavior:
Constant Summary collapse
- MSG =
'Prefer `%<prefer>s` over `%<current>s`.'
Instance Method Summary collapse
Methods inherited from Base
inherited, #on_new_investigation
Methods included from RSpec::Language::NodePattern
#block_or_numblock_pattern, #block_pattern, #numblock_pattern, #send_pattern
Methods included from RSpec::Language
#example?, #example_group?, #example_group_with_body?, #explicit_rspec?, #hook?, #include?, #let?, #rspec?, #shared_group?, #spec_group?, #subject?
Instance Method Details
#on_send(node) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rubocop/cop/rspec/dialect.rb', line 54 def on_send(node) return unless rspec_method?(node) return unless preferred_methods[node.method_name] msg = format(MSG, prefer: preferred_method(node.method_name), current: node.method_name) add_offense(node, message: msg) do |corrector| current = node.loc.selector preferred = preferred_method(current.source) corrector.replace(current, preferred) end end |
#rspec_method?(node) ⇒ Object
52 |
# File 'lib/rubocop/cop/rspec/dialect.rb', line 52 def_node_matcher :rspec_method?, '(send #rspec? #ALL.all ...)' |