Skip to content

Commit fcf813d

Browse files
committed
Refactor hooks selectors
1 parent dd395b0 commit fcf813d

File tree

3 files changed

+32
-18
lines changed

3 files changed

+32
-18
lines changed

lib/rubocop/cop/rspec/base.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: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,25 @@ def node_pattern
5555
attr_reader :selectors
5656
end
5757

58+
# Built in RSpec selectors
59+
module BuiltIn
60+
LANGUAGE = {
61+
'Hooks' => %i[
62+
prepend_before
63+
before
64+
append_before
65+
around
66+
prepend_after
67+
after
68+
append_after
69+
]
70+
}.freeze
71+
72+
def self.language_elements_for(*keys)
73+
LANGUAGE.dig(*keys) || []
74+
end
75+
end
76+
5877
module ExampleGroups
5978
GROUPS = SelectorSet.new(%i[describe context feature example_group])
6079
SKIPPED = SelectorSet.new(%i[xdescribe xcontext xfeature])
@@ -93,16 +112,6 @@ module Examples
93112
end
94113

95114
module Hooks
96-
BUILT_IN_METHOD_NAMES = %i[
97-
prepend_before
98-
before
99-
append_before
100-
around
101-
prepend_after
102-
after
103-
append_after
104-
].freeze
105-
106115
module Scopes
107116
ALL = SelectorSet.new(
108117
%i[

lib/rubocop/rspec/language/node_pattern.rb

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,7 @@ module NodePattern
3434
end
3535

3636
def hook_selectors
37-
custom_method_names = config
38-
.for_all_cops
39-
.fetch('RSpec', {})
40-
.fetch('Language', {})
41-
.fetch('Hooks', [])
42-
.map(&:to_sym)
43-
44-
SelectorSet.new(Hooks::BUILT_IN_METHOD_NAMES + custom_method_names)
37+
selectors('Hooks')
4538
end
4639

4740
def all_selectors
@@ -54,6 +47,14 @@ def all_selectors
5447
Expectations::ALL +
5548
Runners::ALL
5649
end
50+
51+
protected
52+
53+
def selectors(*keys)
54+
SelectorSet.new(
55+
BuiltIn.language_elements_for(*keys) + rspec_language_config(*keys)
56+
)
57+
end
5758
end
5859
end
5960
end

0 commit comments

Comments
 (0)