rubocop-petal 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85df3da29b781802cb5b82029453d2c2045f6940de4379684593eb2bbac8e293
4
- data.tar.gz: b139d8a8158cb1be68636d86ed22fc3edc99df08f85c476b03800081f032d1b8
3
+ metadata.gz: 8b48ddf9490ef1ea965a112b54d5b298eb38056026c773ee89106e9bc3bbf432
4
+ data.tar.gz: 12e03252072b61ec108a3f3d05a9410d4c5808b4544c9399593355cc934e0835
5
5
  SHA512:
6
- metadata.gz: 13450196ed8434f7f47b228ff05f2d4cd4890bd0dda71e2e7a8bb17de4c4a064f4946e185b0edf0dfbbabbb59a6b2d6c4840b4ef091074f026de34be0405f67c
7
- data.tar.gz: 3d622112d46ce09c5e351f90420b6d35a391204ca4af35c5de54e65c9df39e1ac608608aef8995e3a30d6adbeb739b8f77452146eb41f6d7f14571cd1be33e23
6
+ metadata.gz: 4e192999e69e750045f9e55b737348db33609a27a616f07ba1c168569c3d8af090f09ee21a6a3dac13e6c85d84c5b5bb1325d5cfb6aef17bbd8768603701e1e2
7
+ data.tar.gz: c87d8b6e74a8250d2062d6a2d0d54ae7d896391db9163a459d9ad16f3ddb8658f53a0ebfe7802a8625ef62e11f561da1c63cc608d2cdcfefcc487d6db33734b2
data/CHANGELOG.md CHANGED
@@ -2,9 +2,13 @@
2
2
 
3
3
  # main
4
4
 
5
+ #v0.4.0
6
+
7
+ * Added cop `RSpec/StubProducts` ([#18](https://github.com/petalmd/rubocop-petal/pull/18))
8
+
5
9
  # v0.3.1
6
10
 
7
- Correct cop name `Migration/SchemaStatementsMethods` in config ([#17](https://github.com/petalmd/rubocop-petal/pull/17))
11
+ * Correct cop name `Migration/SchemaStatementsMethods` in config ([#17](https://github.com/petalmd/rubocop-petal/pull/17))
8
12
 
9
13
  # v0.3.0
10
14
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop-petal (0.3.1)
4
+ rubocop-petal (0.4.0)
5
5
  rubocop (>= 1.7.0, < 2.0)
6
6
  rubocop-rails (~> 2.10)
7
7
 
@@ -51,7 +51,7 @@ GEM
51
51
  unicode-display_width (>= 1.4.0, < 3.0)
52
52
  rubocop-ast (1.15.0)
53
53
  parser (>= 3.0.1.1)
54
- rubocop-rails (2.13.2)
54
+ rubocop-rails (2.14.2)
55
55
  activesupport (>= 4.2.0)
56
56
  rack (>= 1.1)
57
57
  rubocop (>= 1.7.0, < 2.0)
data/config/default.yml CHANGED
@@ -30,6 +30,13 @@ RSpec/CreateListMax:
30
30
  Include:
31
31
  - spec/**/*
32
32
 
33
+ RSpec/StubProducts:
34
+ Description: 'Suggest to use stub_products instead of veil/unveil_product.'
35
+ Enabled: true
36
+ SafeAutocorrect: false
37
+ Include:
38
+ - spec/**/*
39
+
33
40
  Grape/HelpersIncludeModule:
34
41
  Description: 'Prevent using helpers with block to include module'
35
42
  Enabled: true
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module RSpec
6
+ # Suggest to use stub_products instead of veil/unveil_product
7
+ # which queries the database and can cause flaky tests.
8
+ #
9
+ # # bad
10
+ # unveil_product('MY_PRODUCT')
11
+ # veil_product('MY_PRODUCT')
12
+ #
13
+ # # good
14
+ # stub_products('MY_PRODUCT' => true)
15
+ # stub_products('MY_PRODUCT' => false)
16
+ # stub_products('MY_PRODUCT' => group)
17
+ # stub_products('MY_PRODUCT' => [group1, group2])
18
+ # stub_products(MY_PRODUCT: true)
19
+ #
20
+ class StubProducts < Base
21
+ extend AutoCorrector
22
+
23
+ MSG = 'Use `stub_products` instead of veil/unveil_product.'
24
+
25
+ def_node_search :veil_product?, <<~PATTERN
26
+ (send nil? :veil_product _)
27
+ PATTERN
28
+
29
+ def_node_search :unveil_product?, <<~PATTERN
30
+ (send nil? :unveil_product _)
31
+ PATTERN
32
+
33
+ def on_send(node)
34
+ return unless veil_product?(node) || unveil_product?(node)
35
+
36
+ add_offense(node) do |corrector|
37
+ if (match = /^\S*\s+(\S+)|\(([^)]+)\)/.match(node.source))
38
+ match1, match2 = match.captures
39
+ product_code = match1 || match2
40
+
41
+ product_is_available = !veil_product?(node)
42
+ subst = "stub_products(#{product_code} => #{product_is_available})"
43
+
44
+ corrector.replace(node, subst)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module Petal
5
- VERSION = '0.3.1'
5
+ VERSION = '0.4.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-petal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Francis Bastien
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-09 00:00:00.000000000 Z
11
+ date: 2022-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -77,6 +77,7 @@ files:
77
77
  - lib/rubocop/cop/rails/table_name.rb
78
78
  - lib/rubocop/cop/rspec/authenticated_as.rb
79
79
  - lib/rubocop/cop/rspec/create_list_max.rb
80
+ - lib/rubocop/cop/rspec/stub_products.rb
80
81
  - lib/rubocop/petal.rb
81
82
  - lib/rubocop/petal/inject.rb
82
83
  - lib/rubocop/petal/version.rb