Skip to content

Commit 853e47b

Browse files
committed
Refactor hooks selectors
1 parent 3864576 commit 853e47b

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

lib/rubocop/cop/rspec/cop.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ def rspec_pattern_config
6969
.fetch('RSpec', DEFAULT_CONFIGURATION)
7070
.fetch('Patterns')
7171
end
72+
73+
def rspec_language_config(*keys)
74+
all_cops_config.dig('RSpec', 'Language', *keys)&.map(&:to_sym) || []
75+
end
7276
end
7377
end
7478
end

lib/rubocop/rspec/language.rb

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,24 @@ def node_pattern
5353
attr_reader :selectors
5454
end
5555

56+
module BuiltIn
57+
LANGUAGE = {
58+
'Hooks' => %i[
59+
prepend_before
60+
before
61+
append_before
62+
around
63+
prepend_after
64+
after
65+
append_after
66+
]
67+
}.freeze
68+
69+
def self.language_elements_for(*keys)
70+
LANGUAGE.dig(*keys) || []
71+
end
72+
end
73+
5674
module ExampleGroups
5775
GROUPS = SelectorSet.new(%i[describe context feature example_group])
5876
SKIPPED = SelectorSet.new(%i[xdescribe xcontext xfeature])
@@ -91,16 +109,6 @@ module Examples
91109
end
92110

93111
module Hooks
94-
BUILT_IN_METHOD_NAMES = %i[
95-
prepend_before
96-
before
97-
append_before
98-
around
99-
prepend_after
100-
after
101-
append_after
102-
].freeze
103-
104112
module Scopes
105113
ALL = SelectorSet.new(
106114
%i[

lib/rubocop/rspec/language/node_pattern.rb

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,7 @@ module NodePattern
2929
end
3030

3131
def hook_selectors
32-
custom_method_names = config
33-
.for_all_cops
34-
.fetch('RSpec', {})
35-
.fetch('Language', {})
36-
.fetch('Hooks', [])
37-
.map(&:to_sym)
38-
39-
SelectorSet.new(Hooks::BUILT_IN_METHOD_NAMES + custom_method_names)
32+
selectors('Hooks')
4033
end
4134

4235
def all_selectors
@@ -49,6 +42,14 @@ def all_selectors
4942
Expectations::ALL +
5043
Runners::ALL
5144
end
45+
46+
protected
47+
48+
def selectors(*keys)
49+
SelectorSet.new(
50+
BuiltIn.language_elements_for(*keys) + rspec_language_config(*keys)
51+
)
52+
end
5253
end
5354
end
5455
end

0 commit comments

Comments
 (0)