rubocop-factory_bot 2.25.0 → 2.26.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f40e3398e9038a03648df8c412610ed3d1ad3d4934a46df77667c6f0d225ddcc
4
- data.tar.gz: 68d463bcc67e2f2fd3b38869a7267509db90cda9d7b8e6550367458d73f0f255
3
+ metadata.gz: f13120d5e06606e2f01a7521724acfcb9d79989c5dcd5725cfb9dc509f4b9244
4
+ data.tar.gz: a6dc74ea1bed0ae4b52a7449c2e94d11a6d404803f8eaf57b1ff4bb934a7869e
5
5
  SHA512:
6
- metadata.gz: 166d045079cffb99cfcdef9b192e0ad8c90ba6b789f1539de8b5e697625a26d44ca6bafef56eb007b7c9ba9a78a655f29ba9688874a6e0081d43f1c9048b996e
7
- data.tar.gz: 891d54b5c41e9ad51eec8a1e1ec2ecda863b9f6b700420af7de8cd26494444df8c31e57f78e2783bd949871d0df2bcab15a2ecfbda13e6188d2c370d7bcc11fd
6
+ metadata.gz: feb49a6ac85e680b9517a54937e96c0d246723082d92f1f995f90735a2b6af34bff9c8681517e164969aacc84cae22a0f1289723428050787e4096c11ba2d735
7
+ data.tar.gz: 151c71b63326bcd320be0db9a78a92cff0718214e41a03c349f2c178fdf3c3609a57f911658397934848b58d934b48f85ee12032daff500db8b0b67f2f0ace02
data/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## Master (Unreleased)
4
4
 
5
+ ## 2.26.0 (2024-06-08)
6
+
7
+ - Fix a false positive for `FactoryBot/AssociationStyle` when using nested factories with traits. ([@jaydorsey])
8
+ - Support `AutoCorrect: contextual` option for LSP. ([@ydah])
9
+
10
+ ## 2.25.1 (2024-01-08)
11
+
12
+ - Fix a false positive for `FactoryBot/CreateList` when create call does have method calls and repeat multiple times with other argument. ([@ydah])
13
+ - Fix an error occurred for `FactoryBot/IdSequence` when `sequence` with non-symbol argument or without argument. ([@ydah])
14
+
5
15
  ## 2.25.0 (2024-01-04)
6
16
 
7
17
  - Fix a false positive for `FactoryBot/FactoryNameStyle` when namespaced models. ([@ydah])
@@ -83,6 +93,7 @@
83
93
  [@ddieulivol]: https://github.com/ddieulivol
84
94
  [@dmitrytsepelev]: https://github.com/dmitrytsepelev
85
95
  [@harrylewis]: https://github.com/harrylewis
96
+ [@jaydorsey]: https://github.com/jaydorsey
86
97
  [@jfragoulis]: https://github.com/jfragoulis
87
98
  [@jonatas]: https://github.com/jonatas
88
99
  [@leoarnold]: https://github.com/leoarnold
data/config/default.yml CHANGED
@@ -49,6 +49,7 @@ FactoryBot/ConsistentParenthesesStyle:
49
49
  FactoryBot/CreateList:
50
50
  Description: Checks for create_list usage.
51
51
  Enabled: true
52
+ AutoCorrect: contextual
52
53
  Include:
53
54
  - "**/*_spec.rb"
54
55
  - "**/spec/**/*"
@@ -61,7 +62,7 @@ FactoryBot/CreateList:
61
62
  ExplicitOnly: false
62
63
  SafeAutoCorrect: false
63
64
  VersionAdded: '1.25'
64
- VersionChanged: '2.24'
65
+ VersionChanged: '2.26'
65
66
  Reference: https://www.rubydoc.info/gems/rubocop-factory_bot/RuboCop/Cop/FactoryBot/CreateList
66
67
 
67
68
  FactoryBot/ExcessiveCreateList:
@@ -67,6 +67,7 @@ module RuboCop
67
67
 
68
68
  DEFAULT_NON_IMPLICIT_ASSOCIATION_METHOD_NAMES = %w[
69
69
  association
70
+ factory
70
71
  sequence
71
72
  skip_create
72
73
  traits_for_enum
@@ -69,7 +69,7 @@ module RuboCop
69
69
  RESTRICT_ON_SEND = %i[create_list].freeze
70
70
 
71
71
  # @!method repeat_count(node)
72
- def_node_matcher :repeat_count, <<-PATTERN
72
+ def_node_matcher :repeat_count, <<~PATTERN
73
73
  (block
74
74
  {
75
75
  (send (const {nil? cbase} :Array) :new (int $_)) # Array.new(3) { create(:user) }
@@ -90,7 +90,7 @@ module RuboCop
90
90
 
91
91
  # @!method arguments_include_method_call?(node)
92
92
  def_node_matcher :arguments_include_method_call?, <<~PATTERN
93
- (send #factory_call? :create sym `(send ...))
93
+ (send #factory_call? :create sym ... `(send ...))
94
94
  PATTERN
95
95
 
96
96
  # @!method factory_call(node)
@@ -104,7 +104,7 @@ module RuboCop
104
104
  PATTERN
105
105
 
106
106
  # @!method factory_calls_in_array?(node)
107
- def_node_search :factory_calls_in_array?, <<-PATTERN
107
+ def_node_search :factory_calls_in_array?, <<~PATTERN
108
108
  (array #factory_call+)
109
109
  PATTERN
110
110
 
@@ -19,12 +19,15 @@ module RuboCop
19
19
  class IdSequence < ::RuboCop::Cop::Base
20
20
  extend AutoCorrector
21
21
  include RangeHelp
22
+ include RuboCop::FactoryBot::Language
22
23
 
23
24
  MSG = 'Do not create a sequence for an id attribute'
24
25
  RESTRICT_ON_SEND = %i[sequence].freeze
25
26
 
26
27
  def on_send(node)
27
- return unless node.first_argument.value == :id
28
+ return unless node.receiver.nil? || factory_bot?(node.receiver)
29
+ return unless node.first_argument&.sym_type? &&
30
+ node.first_argument.value == :id
28
31
 
29
32
  add_offense(node) do |corrector|
30
33
  range_to_remove = range_by_whole_lines(
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module FactoryBot
5
+ module Cop
6
+ # Source and spec generator for new cops
7
+ #
8
+ # This generator will take a cop name and generate a source file
9
+ # and spec file when given a valid qualified cop name.
10
+ # @api private
11
+ class Generator < RuboCop::Cop::Generator
12
+ def todo
13
+ <<~TODO
14
+ Do 4 steps:
15
+ 1. Modify the description of #{badge} in config/default.yml
16
+ 2. Implement your new cop in the generated file!
17
+ 3. Add an entry about new cop to CHANGELOG.md
18
+ 4. Commit your new cop with a message such as
19
+ e.g. "Add new `#{badge}` cop"
20
+ TODO
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module FactoryBot
5
5
  # Version information for the factory_bot RuboCop plugin.
6
6
  module Version
7
- STRING = '2.25.0'
7
+ STRING = '2.26.0'
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-factory_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.25.0
4
+ version: 2.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Backus
@@ -9,10 +9,10 @@ authors:
9
9
  - Phil Pirozhkov
10
10
  - Maxim Krizhanovsky
11
11
  - Andrew Bromwich
12
- autorequire:
12
+ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2024-01-04 00:00:00.000000000 Z
15
+ date: 2024-06-08 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rubocop
@@ -20,18 +20,18 @@ dependencies:
20
20
  requirements:
21
21
  - - "~>"
22
22
  - !ruby/object:Gem::Version
23
- version: '1.33'
23
+ version: '1.41'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - "~>"
29
29
  - !ruby/object:Gem::Version
30
- version: '1.33'
30
+ version: '1.41'
31
31
  description: |
32
32
  Code style checking for factory_bot files.
33
33
  A plugin for the RuboCop code style enforcing & linting tool.
34
- email:
34
+ email:
35
35
  executables: []
36
36
  extensions: []
37
37
  extra_rdoc_files:
@@ -58,6 +58,7 @@ files:
58
58
  - lib/rubocop/cop/factory_bot/syntax_methods.rb
59
59
  - lib/rubocop/cop/factory_bot_cops.rb
60
60
  - lib/rubocop/factory_bot/config_formatter.rb
61
+ - lib/rubocop/factory_bot/cop/generator.rb
61
62
  - lib/rubocop/factory_bot/description_extractor.rb
62
63
  - lib/rubocop/factory_bot/factory_bot.rb
63
64
  - lib/rubocop/factory_bot/language.rb
@@ -69,7 +70,7 @@ metadata:
69
70
  changelog_uri: https://github.com/rubocop/rubocop-factory_bot/blob/master/CHANGELOG.md
70
71
  documentation_uri: https://docs.rubocop.org/rubocop-factory_bot/
71
72
  rubygems_mfa_required: 'true'
72
- post_install_message:
73
+ post_install_message:
73
74
  rdoc_options: []
74
75
  require_paths:
75
76
  - lib
@@ -84,8 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
85
  - !ruby/object:Gem::Version
85
86
  version: '0'
86
87
  requirements: []
87
- rubygems_version: 3.4.22
88
- signing_key:
88
+ rubygems_version: 3.5.9
89
+ signing_key:
89
90
  specification_version: 4
90
91
  summary: Code style checking for factory_bot files
91
92
  test_files: []