Skip to content

Commit

Permalink
Refactor hooks selectors
Browse files Browse the repository at this point in the history
  • Loading branch information
sl4vr committed Jul 14, 2020
1 parent 3864576 commit 853e47b
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 18 deletions.
4 changes: 4 additions & 0 deletions lib/rubocop/cop/rspec/cop.rb
Expand Up @@ -69,6 +69,10 @@ def rspec_pattern_config
.fetch('RSpec', DEFAULT_CONFIGURATION)
.fetch('Patterns')
end

def rspec_language_config(*keys)
all_cops_config.dig('RSpec', 'Language', *keys)&.map(&:to_sym) || []
end
end
end
end
Expand Down
28 changes: 18 additions & 10 deletions lib/rubocop/rspec/language.rb
Expand Up @@ -53,6 +53,24 @@ def node_pattern
attr_reader :selectors
end

module BuiltIn
LANGUAGE = {
'Hooks' => %i[
prepend_before
before
append_before
around
prepend_after
after
append_after
]
}.freeze

def self.language_elements_for(*keys)
LANGUAGE.dig(*keys) || []
end
end

module ExampleGroups
GROUPS = SelectorSet.new(%i[describe context feature example_group])
SKIPPED = SelectorSet.new(%i[xdescribe xcontext xfeature])
Expand Down Expand Up @@ -91,16 +109,6 @@ module Examples
end

module Hooks
BUILT_IN_METHOD_NAMES = %i[
prepend_before
before
append_before
around
prepend_after
after
append_after
].freeze

module Scopes
ALL = SelectorSet.new(
%i[
Expand Down
17 changes: 9 additions & 8 deletions lib/rubocop/rspec/language/node_pattern.rb
Expand Up @@ -29,14 +29,7 @@ module NodePattern
end

def hook_selectors
custom_method_names = config
.for_all_cops
.fetch('RSpec', {})
.fetch('Language', {})
.fetch('Hooks', [])
.map(&:to_sym)

SelectorSet.new(Hooks::BUILT_IN_METHOD_NAMES + custom_method_names)
selectors('Hooks')
end

def all_selectors
Expand All @@ -49,6 +42,14 @@ def all_selectors
Expectations::ALL +
Runners::ALL
end

protected

def selectors(*keys)
SelectorSet.new(
BuiltIn.language_elements_for(*keys) + rspec_language_config(*keys)
)
end
end
end
end
Expand Down

0 comments on commit 853e47b

Please sign in to comment.