rubocop-rspec 2.29.2 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +28 -0
- data/README.md +1 -1
- data/config/default.yml +62 -264
- data/config/obsoletion.yml +11 -0
- data/lib/rubocop/cop/rspec/base.rb +0 -1
- data/lib/rubocop/cop/rspec/dialect.rb +13 -0
- data/lib/rubocop/cop/rspec/expect_actual.rb +1 -1
- data/lib/rubocop/cop/rspec/expect_in_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/expect_in_let.rb +42 -0
- data/lib/rubocop/cop/rspec/leaky_constant_declaration.rb +1 -1
- data/lib/rubocop/cop/rspec/missing_expectation_target_method.rb +54 -0
- data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -1
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +2 -2
- data/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb +2 -4
- data/lib/rubocop/cop/rspec/named_subject.rb +5 -2
- data/lib/rubocop/cop/rspec/predicate_matcher.rb +1 -1
- data/lib/rubocop/cop/rspec/remove_const.rb +0 -1
- data/lib/rubocop/cop/rspec/scattered_setup.rb +1 -1
- data/lib/rubocop/cop/rspec/sort_metadata.rb +1 -1
- data/lib/rubocop/cop/rspec/stubbed_mock.rb +3 -1
- data/lib/rubocop/cop/rspec/subject_stub.rb +2 -2
- data/lib/rubocop/cop/rspec_cops.rb +2 -25
- data/lib/rubocop/rspec/concept.rb +0 -1
- data/lib/rubocop/rspec/config_formatter.rb +1 -24
- data/lib/rubocop/rspec/cop/generator.rb +25 -0
- data/lib/rubocop/rspec/language.rb +0 -1
- data/lib/rubocop/rspec/shared_contexts/default_rspec_language_config_context.rb +1 -1
- data/lib/rubocop/rspec/version.rb +1 -1
- data/lib/rubocop-rspec.rb +1 -17
- metadata +7 -69
- data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +0 -39
- data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +0 -104
- data/lib/rubocop/cop/rspec/capybara/match_style.rb +0 -38
- data/lib/rubocop/cop/rspec/capybara/negation_matcher.rb +0 -33
- data/lib/rubocop/cop/rspec/capybara/specific_actions.rb +0 -29
- data/lib/rubocop/cop/rspec/capybara/specific_finders.rb +0 -24
- data/lib/rubocop/cop/rspec/capybara/specific_matcher.rb +0 -35
- data/lib/rubocop/cop/rspec/capybara/visibility_matcher.rb +0 -36
- data/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb +0 -35
- data/lib/rubocop/cop/rspec/factory_bot/consistent_parentheses_style.rb +0 -50
- data/lib/rubocop/cop/rspec/factory_bot/create_list.rb +0 -40
- data/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb +0 -29
- data/lib/rubocop/cop/rspec/factory_bot/factory_name_style.rb +0 -33
- data/lib/rubocop/cop/rspec/factory_bot/syntax_methods.rb +0 -55
- data/lib/rubocop/cop/rspec/file_path.rb +0 -179
- data/lib/rubocop/cop/rspec/rails/avoid_setup_hook.rb +0 -27
- data/lib/rubocop/cop/rspec/rails/have_http_status.rb +0 -35
- data/lib/rubocop/cop/rspec/rails/http_status.rb +0 -61
- data/lib/rubocop/cop/rspec/rails/inferred_spec_type.rb +0 -62
- data/lib/rubocop/cop/rspec/rails/minitest_assertions.rb +0 -39
- data/lib/rubocop/cop/rspec/rails/negation_be_valid.rb +0 -39
- data/lib/rubocop/cop/rspec/rails/travel_around.rb +0 -34
- data/lib/rubocop/rspec/language/node_pattern.rb +0 -48
@@ -1,104 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# Checks for consistent method usage in feature specs.
|
8
|
-
#
|
9
|
-
# By default, the cop disables all Capybara-specific methods that have
|
10
|
-
# the same native RSpec method (e.g. are just aliases). Some teams
|
11
|
-
# however may prefer using some of the Capybara methods (like `feature`)
|
12
|
-
# to make it obvious that the test uses Capybara, while still disable
|
13
|
-
# the rest of the methods, like `given` (alias for `let`), `background`
|
14
|
-
# (alias for `before`), etc. You can configure which of the methods to
|
15
|
-
# be enabled by using the EnabledMethods configuration option.
|
16
|
-
#
|
17
|
-
# @example
|
18
|
-
# # bad
|
19
|
-
# feature 'User logs in' do
|
20
|
-
# given(:user) { User.new }
|
21
|
-
#
|
22
|
-
# background do
|
23
|
-
# visit new_session_path
|
24
|
-
# end
|
25
|
-
#
|
26
|
-
# scenario 'with OAuth' do
|
27
|
-
# # ...
|
28
|
-
# end
|
29
|
-
# end
|
30
|
-
#
|
31
|
-
# # good
|
32
|
-
# describe 'User logs in' do
|
33
|
-
# let(:user) { User.new }
|
34
|
-
#
|
35
|
-
# before do
|
36
|
-
# visit new_session_path
|
37
|
-
# end
|
38
|
-
#
|
39
|
-
# it 'with OAuth' do
|
40
|
-
# # ...
|
41
|
-
# end
|
42
|
-
# end
|
43
|
-
#
|
44
|
-
class FeatureMethods < Base
|
45
|
-
extend AutoCorrector
|
46
|
-
include InsideExampleGroup
|
47
|
-
|
48
|
-
MSG = 'Use `%<replacement>s` instead of `%<method>s`.'
|
49
|
-
|
50
|
-
# https://github.com/teamcapybara/capybara/blob/e283c1aeaa72441f5403963577e16333bf111a81/lib/capybara/rspec/features.rb#L31-L36
|
51
|
-
MAP = {
|
52
|
-
background: :before,
|
53
|
-
scenario: :it,
|
54
|
-
xscenario: :xit,
|
55
|
-
given: :let,
|
56
|
-
given!: :let!,
|
57
|
-
feature: :describe
|
58
|
-
}.freeze
|
59
|
-
|
60
|
-
# @!method capybara_speak(node)
|
61
|
-
def_node_matcher :capybara_speak, <<~PATTERN
|
62
|
-
{#{MAP.keys.map(&:inspect).join(' ')}}
|
63
|
-
PATTERN
|
64
|
-
|
65
|
-
# @!method feature_method(node)
|
66
|
-
def_node_matcher :feature_method, <<~PATTERN
|
67
|
-
(block
|
68
|
-
$(send #rspec? $#capybara_speak ...)
|
69
|
-
...)
|
70
|
-
PATTERN
|
71
|
-
|
72
|
-
def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
|
73
|
-
return unless inside_example_group?(node)
|
74
|
-
|
75
|
-
feature_method(node) do |send_node, match|
|
76
|
-
next if enabled?(match)
|
77
|
-
|
78
|
-
add_offense(send_node.loc.selector) do |corrector|
|
79
|
-
corrector.replace(send_node.loc.selector, MAP[match].to_s)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def message(range)
|
85
|
-
name = range.source.to_sym
|
86
|
-
format(MSG, method: name, replacement: MAP[name])
|
87
|
-
end
|
88
|
-
|
89
|
-
private
|
90
|
-
|
91
|
-
def enabled?(method_name)
|
92
|
-
enabled_methods.include?(method_name)
|
93
|
-
end
|
94
|
-
|
95
|
-
def enabled_methods
|
96
|
-
cop_config
|
97
|
-
.fetch('EnabledMethods', [])
|
98
|
-
.map(&:to_sym)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks for usage of deprecated style methods.
|
9
|
-
# #
|
10
|
-
# # @example when using `assert_style`
|
11
|
-
# # # bad
|
12
|
-
# # page.find(:css, '#first').assert_style(display: 'block')
|
13
|
-
# #
|
14
|
-
# # # good
|
15
|
-
# # page.find(:css, '#first').assert_matches_style(display: 'block')
|
16
|
-
# #
|
17
|
-
# # @example when using `has_style?`
|
18
|
-
# # # bad
|
19
|
-
# # expect(page.find(:css, 'first')
|
20
|
-
# # .has_style?(display: 'block')).to be true
|
21
|
-
# #
|
22
|
-
# # # good
|
23
|
-
# # expect(page.find(:css, 'first')
|
24
|
-
# # .matches_style?(display: 'block')).to be true
|
25
|
-
# #
|
26
|
-
# # @example when using `have_style`
|
27
|
-
# # # bad
|
28
|
-
# # expect(page).to have_style(display: 'block')
|
29
|
-
# #
|
30
|
-
# # # good
|
31
|
-
# # expect(page).to match_style(display: 'block')
|
32
|
-
# #
|
33
|
-
# class MatchStyle < ::RuboCop::Cop::Base; end
|
34
|
-
MatchStyle = ::RuboCop::Cop::Capybara::MatchStyle
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Enforces use of `have_no_*` or `not_to` for negated expectations.
|
9
|
-
# #
|
10
|
-
# # @example EnforcedStyle: not_to (default)
|
11
|
-
# # # bad
|
12
|
-
# # expect(page).to have_no_selector
|
13
|
-
# # expect(page).to have_no_css('a')
|
14
|
-
# #
|
15
|
-
# # # good
|
16
|
-
# # expect(page).not_to have_selector
|
17
|
-
# # expect(page).not_to have_css('a')
|
18
|
-
# #
|
19
|
-
# # @example EnforcedStyle: have_no
|
20
|
-
# # # bad
|
21
|
-
# # expect(page).not_to have_selector
|
22
|
-
# # expect(page).not_to have_css('a')
|
23
|
-
# #
|
24
|
-
# # # good
|
25
|
-
# # expect(page).to have_no_selector
|
26
|
-
# # expect(page).to have_no_css('a')
|
27
|
-
# #
|
28
|
-
# class NegationMatcher < ::RuboCop::Cop::Base; end
|
29
|
-
NegationMatcher = ::RuboCop::Cop::Capybara::NegationMatcher
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks for there is a more specific actions offered by Capybara.
|
9
|
-
# #
|
10
|
-
# # @example
|
11
|
-
# #
|
12
|
-
# # # bad
|
13
|
-
# # find('a').click
|
14
|
-
# # find('button.cls').click
|
15
|
-
# # find('a', exact_text: 'foo').click
|
16
|
-
# # find('div button').click
|
17
|
-
# #
|
18
|
-
# # # good
|
19
|
-
# # click_link
|
20
|
-
# # click_button(class: 'cls')
|
21
|
-
# # click_link(exact_text: 'foo')
|
22
|
-
# # find('div').click_button
|
23
|
-
# #
|
24
|
-
# class SpecificActions < ::RuboCop::Cop::Base; end
|
25
|
-
SpecificActions = ::RuboCop::Cop::Capybara::SpecificActions
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks if there is a more specific finder offered by Capybara.
|
9
|
-
# #
|
10
|
-
# # @example
|
11
|
-
# # # bad
|
12
|
-
# # find('#some-id')
|
13
|
-
# # find('[visible][id=some-id]')
|
14
|
-
# #
|
15
|
-
# # # good
|
16
|
-
# # find_by_id('some-id')
|
17
|
-
# # find_by_id('some-id', visible: true)
|
18
|
-
# #
|
19
|
-
# class SpecificFinders < ::RuboCop::Cop::Base; end
|
20
|
-
SpecificFinders = ::RuboCop::Cop::Capybara::SpecificFinders
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks for there is a more specific matcher offered by Capybara.
|
9
|
-
# #
|
10
|
-
# # @example
|
11
|
-
# #
|
12
|
-
# # # bad
|
13
|
-
# # expect(page).to have_selector('button')
|
14
|
-
# # expect(page).to have_no_selector('button.cls')
|
15
|
-
# # expect(page).to have_css('button')
|
16
|
-
# # expect(page).to have_no_css('a.cls', href: 'http://example.com')
|
17
|
-
# # expect(page).to have_css('table.cls')
|
18
|
-
# # expect(page).to have_css('select')
|
19
|
-
# # expect(page).to have_css('input', exact_text: 'foo')
|
20
|
-
# #
|
21
|
-
# # # good
|
22
|
-
# # expect(page).to have_button
|
23
|
-
# # expect(page).to have_no_button(class: 'cls')
|
24
|
-
# # expect(page).to have_button
|
25
|
-
# # expect(page).to have_no_link('foo', class: 'cls', href: 'http://example.com')
|
26
|
-
# # expect(page).to have_table(class: 'cls')
|
27
|
-
# # expect(page).to have_select
|
28
|
-
# # expect(page).to have_field('foo')
|
29
|
-
# #
|
30
|
-
# class SpecificMatcher < ::RuboCop::Cop::Base; end
|
31
|
-
SpecificMatcher = ::RuboCop::Cop::Capybara::SpecificMatcher
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks for boolean visibility in Capybara finders.
|
9
|
-
# #
|
10
|
-
# # Capybara lets you find elements that match a certain visibility
|
11
|
-
# # using the `:visible` option. `:visible` accepts both boolean and
|
12
|
-
# # symbols as values, however using booleans can have unwanted
|
13
|
-
# # effects. `visible: false` does not find just invisible elements,
|
14
|
-
# # but both visible and invisible elements. For expressiveness and
|
15
|
-
# # clarity, use one of the # symbol values, `:all`, `:hidden` or
|
16
|
-
# # `:visible`.
|
17
|
-
# # Read more in
|
18
|
-
# # https://www.rubydoc.info/gems/capybara/Capybara%2FNode%2FFinders:all[the documentation].
|
19
|
-
# #
|
20
|
-
# # @example
|
21
|
-
# # # bad
|
22
|
-
# # expect(page).to have_selector('.foo', visible: false)
|
23
|
-
# # expect(page).to have_css('.foo', visible: true)
|
24
|
-
# # expect(page).to have_link('my link', visible: false)
|
25
|
-
# #
|
26
|
-
# # # good
|
27
|
-
# # expect(page).to have_selector('.foo', visible: :visible)
|
28
|
-
# # expect(page).to have_css('.foo', visible: :all)
|
29
|
-
# # expect(page).to have_link('my link', visible: :hidden)
|
30
|
-
# #
|
31
|
-
# class VisibilityMatcher < ::RuboCop::Cop::Base; end
|
32
|
-
VisibilityMatcher = ::RuboCop::Cop::Capybara::VisibilityMatcher
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module FactoryBot
|
7
|
-
# @!parse
|
8
|
-
# # Always declare attribute values as blocks.
|
9
|
-
# #
|
10
|
-
# # @example
|
11
|
-
# # # bad
|
12
|
-
# # kind [:active, :rejected].sample
|
13
|
-
# #
|
14
|
-
# # # good
|
15
|
-
# # kind { [:active, :rejected].sample }
|
16
|
-
# #
|
17
|
-
# # # bad
|
18
|
-
# # closed_at 1.day.from_now
|
19
|
-
# #
|
20
|
-
# # # good
|
21
|
-
# # closed_at { 1.day.from_now }
|
22
|
-
# #
|
23
|
-
# # # bad
|
24
|
-
# # count 1
|
25
|
-
# #
|
26
|
-
# # # good
|
27
|
-
# # count { 1 }
|
28
|
-
# #
|
29
|
-
# class AttributeDefinedStatically < ::RuboCop::Cop::Base; end
|
30
|
-
AttributeDefinedStatically =
|
31
|
-
::RuboCop::Cop::FactoryBot::AttributeDefinedStatically
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module FactoryBot
|
7
|
-
# @!parse
|
8
|
-
# # Use a consistent style for parentheses in factory bot calls.
|
9
|
-
# #
|
10
|
-
# # @example
|
11
|
-
# #
|
12
|
-
# # # bad
|
13
|
-
# # create :user
|
14
|
-
# # build(:user)
|
15
|
-
# # create(:login)
|
16
|
-
# # create :login
|
17
|
-
# #
|
18
|
-
# # @example `EnforcedStyle: require_parentheses` (default)
|
19
|
-
# #
|
20
|
-
# # # good
|
21
|
-
# # create(:user)
|
22
|
-
# # create(:user)
|
23
|
-
# # create(:login)
|
24
|
-
# # build(:login)
|
25
|
-
# #
|
26
|
-
# # @example `EnforcedStyle: omit_parentheses`
|
27
|
-
# #
|
28
|
-
# # # good
|
29
|
-
# # create :user
|
30
|
-
# # build :user
|
31
|
-
# # create :login
|
32
|
-
# # create :login
|
33
|
-
# #
|
34
|
-
# # # also good
|
35
|
-
# # # when method name and first argument are not on same line
|
36
|
-
# # create(
|
37
|
-
# # :user
|
38
|
-
# # )
|
39
|
-
# # build(
|
40
|
-
# # :user,
|
41
|
-
# # name: 'foo'
|
42
|
-
# # )
|
43
|
-
# #
|
44
|
-
# class ConsistentParenthesesStyle < ::RuboCop::Cop::Base; end
|
45
|
-
ConsistentParenthesesStyle =
|
46
|
-
::RuboCop::Cop::FactoryBot::ConsistentParenthesesStyle
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module FactoryBot
|
7
|
-
# @!parse
|
8
|
-
# # Checks for create_list usage.
|
9
|
-
# #
|
10
|
-
# # This cop can be configured using the `EnforcedStyle` option
|
11
|
-
# #
|
12
|
-
# # @example `EnforcedStyle: create_list` (default)
|
13
|
-
# # # bad
|
14
|
-
# # 3.times { create :user }
|
15
|
-
# #
|
16
|
-
# # # good
|
17
|
-
# # create_list :user, 3
|
18
|
-
# #
|
19
|
-
# # # bad
|
20
|
-
# # 3.times { create :user, age: 18 }
|
21
|
-
# #
|
22
|
-
# # # good - index is used to alter the created models attributes
|
23
|
-
# # 3.times { |n| create :user, age: n }
|
24
|
-
# #
|
25
|
-
# # # good - contains a method call, may return different values
|
26
|
-
# # 3.times { create :user, age: rand }
|
27
|
-
# #
|
28
|
-
# # @example `EnforcedStyle: n_times`
|
29
|
-
# # # bad
|
30
|
-
# # create_list :user, 3
|
31
|
-
# #
|
32
|
-
# # # good
|
33
|
-
# # 3.times { create :user }
|
34
|
-
# #
|
35
|
-
# class CreateList < ::RuboCop::Cop::Base; end
|
36
|
-
CreateList = ::RuboCop::Cop::FactoryBot::CreateList
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module FactoryBot
|
7
|
-
# @!parse
|
8
|
-
# # Use string value when setting the class attribute explicitly.
|
9
|
-
# #
|
10
|
-
# # This cop would promote faster tests by lazy-loading of
|
11
|
-
# # application files. Also, this could help you suppress potential
|
12
|
-
# # bugs in combination with external libraries by avoiding a preload
|
13
|
-
# # of application files from the factory files.
|
14
|
-
# #
|
15
|
-
# # @example
|
16
|
-
# # # bad
|
17
|
-
# # factory :foo, class: Foo do
|
18
|
-
# # end
|
19
|
-
# #
|
20
|
-
# # # good
|
21
|
-
# # factory :foo, class: 'Foo' do
|
22
|
-
# # end
|
23
|
-
# #
|
24
|
-
# class FactoryClassName < ::RuboCop::Cop::Base; end
|
25
|
-
FactoryClassName = ::RuboCop::Cop::FactoryBot::FactoryClassName
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module FactoryBot
|
7
|
-
# @!parse
|
8
|
-
# # Checks for name style for argument of FactoryBot::Syntax::Methods.
|
9
|
-
# #
|
10
|
-
# # @example EnforcedStyle: symbol (default)
|
11
|
-
# # # bad
|
12
|
-
# # create('user')
|
13
|
-
# # build "user", username: "NAME"
|
14
|
-
# #
|
15
|
-
# # # good
|
16
|
-
# # create(:user)
|
17
|
-
# # build :user, username: "NAME"
|
18
|
-
# #
|
19
|
-
# # @example EnforcedStyle: string
|
20
|
-
# # # bad
|
21
|
-
# # create(:user)
|
22
|
-
# # build :user, username: "NAME"
|
23
|
-
# #
|
24
|
-
# # # good
|
25
|
-
# # create('user')
|
26
|
-
# # build "user", username: "NAME"
|
27
|
-
# #
|
28
|
-
# class FactoryNameStyle < ::RuboCop::Cop::Base; end
|
29
|
-
FactoryNameStyle = ::RuboCop::Cop::FactoryBot::FactoryNameStyle
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module FactoryBot
|
7
|
-
# @!parse
|
8
|
-
# # Use shorthands from `FactoryBot::Syntax::Methods` in your specs.
|
9
|
-
# #
|
10
|
-
# # @safety
|
11
|
-
# # The autocorrection is marked as unsafe because the cop
|
12
|
-
# # cannot verify whether you already include
|
13
|
-
# # `FactoryBot::Syntax::Methods` in your test suite.
|
14
|
-
# #
|
15
|
-
# # If you're using Rails, add the following configuration to
|
16
|
-
# # `spec/support/factory_bot.rb` and be sure to require that file
|
17
|
-
# # in `rails_helper.rb`:
|
18
|
-
# #
|
19
|
-
# # [source,ruby]
|
20
|
-
# # ----
|
21
|
-
# # RSpec.configure do |config|
|
22
|
-
# # config.include FactoryBot::Syntax::Methods
|
23
|
-
# # end
|
24
|
-
# # ----
|
25
|
-
# #
|
26
|
-
# # If you're not using Rails:
|
27
|
-
# #
|
28
|
-
# # [source,ruby]
|
29
|
-
# # ----
|
30
|
-
# # RSpec.configure do |config|
|
31
|
-
# # config.include FactoryBot::Syntax::Methods
|
32
|
-
# #
|
33
|
-
# # config.before(:suite) do
|
34
|
-
# # FactoryBot.find_definitions
|
35
|
-
# # end
|
36
|
-
# # end
|
37
|
-
# # ----
|
38
|
-
# #
|
39
|
-
# # @example
|
40
|
-
# # # bad
|
41
|
-
# # FactoryBot.create(:bar)
|
42
|
-
# # FactoryBot.build(:bar)
|
43
|
-
# # FactoryBot.attributes_for(:bar)
|
44
|
-
# #
|
45
|
-
# # # good
|
46
|
-
# # create(:bar)
|
47
|
-
# # build(:bar)
|
48
|
-
# # attributes_for(:bar)
|
49
|
-
# #
|
50
|
-
# class SyntaxMethods < ::RuboCop::Cop::Base; end
|
51
|
-
SyntaxMethods = ::RuboCop::Cop::FactoryBot::SyntaxMethods
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|