sevencop 0.36.0 → 0.37.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 +4 -4
- data/.rubocop.yml +3 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -0
- data/config/default.yml +8 -0
- data/lib/rubocop/cop/sevencop/rspec_rails_have_http_status.rb +66 -0
- data/lib/sevencop/version.rb +1 -1
- data/lib/sevencop.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f8b9af448980183de77764548e3b31c6e402816213fdeb8700a9ab619b2703a
|
4
|
+
data.tar.gz: b534ee269ff21655204b2eeb2397703f3c378c34c0e0c3d4702b59c2f96afb2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7eeff888f7f8f708ef105d9842a9c16db91da60984076528f3c9d4e364bce4934bb04e5fe108c2af2841a1b71438dcad3d82afd963256613ff95adf6ecf95b3
|
7
|
+
data.tar.gz: a0a838e1f7ae5eb4c12a0bb30a327140cb5b4bddbfc1c5e089bc1fbc200e19144eab18a263fca11ab1574d9d2d4de4a735e62ee6e3787b6fc6cb96a50a59d648
|
data/.rubocop.yml
CHANGED
@@ -19,6 +19,7 @@ Layout/LineLength:
|
|
19
19
|
Lint/UselessAccessModifier:
|
20
20
|
MethodCreatingMethods:
|
21
21
|
- def_node_matcher
|
22
|
+
- def_node_search
|
22
23
|
|
23
24
|
Metrics:
|
24
25
|
Enabled: false
|
@@ -39,6 +40,7 @@ RSpec/FilePath:
|
|
39
40
|
RSpecEmptyLineAfterLet: rspec_empty_line_after_let
|
40
41
|
RSpecExamplesInSameGroup: rspec_examples_in_same_group
|
41
42
|
RSpecMemoizedHelperBlockDelimiter: rspec_memoized_helper_block_delimiter
|
43
|
+
RSpecRailsHaveHttpStatus: rspec_rails_have_http_status
|
42
44
|
|
43
45
|
RSpec/MultipleExpectations:
|
44
46
|
Enabled: false
|
@@ -49,6 +51,7 @@ RSpec/SpecFilePathFormat:
|
|
49
51
|
RSpecEmptyLineAfterLet: rspec_empty_line_after_let
|
50
52
|
RSpecExamplesInSameGroup: rspec_examples_in_same_group
|
51
53
|
RSpecMemoizedHelperBlockDelimiter: rspec_memoized_helper_block_delimiter
|
54
|
+
RSpecRailsHaveHttpStatus: rspec_rails_have_http_status
|
52
55
|
|
53
56
|
Sevencop/AutoloadOrdered:
|
54
57
|
Enabled: true
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -48,6 +48,7 @@ Note that all cops are `Enabled: false` by default.
|
|
48
48
|
- [Sevencop/RSpecEmptyLineAfterLet](lib/rubocop/cop/sevencop/rspec_empty_line_after_let.rb)
|
49
49
|
- [Sevencop/RSpecExamplesInSameGroup](lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb)
|
50
50
|
- [Sevencop/RSpecMemoizedHelperBlockDelimiter](lib/rubocop/cop/sevencop/rspec_memoized_helper_block_delimiter.rb)
|
51
|
+
- [Sevencop/RSpecRailsHaveHttpStatus](lib/rubocop/cop/sevencop/rspec_rails_have_http_status.rb)
|
51
52
|
|
52
53
|
## Notes
|
53
54
|
|
data/config/default.yml
CHANGED
@@ -146,3 +146,11 @@ Sevencop/RSpecMemoizedHelperBlockDelimiter:
|
|
146
146
|
Enabled: false
|
147
147
|
Include:
|
148
148
|
- spec/**/*
|
149
|
+
|
150
|
+
Sevencop/RSpecRailsHaveHttpStatus:
|
151
|
+
Description: |
|
152
|
+
Always check status code with `have_http_status`.
|
153
|
+
Enabled: false
|
154
|
+
Include:
|
155
|
+
- spec/controllers/**/*
|
156
|
+
- spec/requests/**/*
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Sevencop
|
6
|
+
# Always check status code with `have_http_status`.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# it 'creates a new post' do
|
11
|
+
# expect { subject }.to change(Post, :count).by(1)
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# # good
|
15
|
+
# it 'creates a new post' do
|
16
|
+
# expect { subject }.to change(Post, :count).by(1)
|
17
|
+
# expect(response).to have_http_status(200)
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# # good
|
21
|
+
# it 'creates a new post' do
|
22
|
+
# expect { subject }.to change(Post, :count).by(1)
|
23
|
+
# expect(response).to redirect_to(posts_path)
|
24
|
+
# end
|
25
|
+
class RSpecRailsHaveHttpStatus < Base
|
26
|
+
MSG = 'Always check status code with `have_http_status`.'
|
27
|
+
|
28
|
+
EXAMPLE_METHOD_NAMES = %i[
|
29
|
+
example
|
30
|
+
it
|
31
|
+
specify
|
32
|
+
].to_set.freeze
|
33
|
+
|
34
|
+
STATUS_CHECK_METHOD_NAMES = %i[
|
35
|
+
have_http_status
|
36
|
+
redirect_to
|
37
|
+
].to_set.freeze
|
38
|
+
|
39
|
+
# @param [RuboCop::AST::BlockNode] node
|
40
|
+
# @return [void]
|
41
|
+
def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
|
42
|
+
return unless example_method?(node)
|
43
|
+
return if including_status_check_method?(node)
|
44
|
+
|
45
|
+
add_offense(node)
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
# @!method example_method?(node)
|
51
|
+
# @param [RuboCop::AST::BlockNode] node
|
52
|
+
# @return [Boolean]
|
53
|
+
def_node_matcher :example_method?, <<~PATTERN
|
54
|
+
(block (send nil? EXAMPLE_METHOD_NAMES ...) ...)
|
55
|
+
PATTERN
|
56
|
+
|
57
|
+
# @!method including_status_check_method?(node)
|
58
|
+
# @param [RuboCop::AST::BlockNode] node
|
59
|
+
# @return [Boolean]
|
60
|
+
def_node_search :including_status_check_method?, <<~PATTERN
|
61
|
+
(send nil? STATUS_CHECK_METHOD_NAMES ...)
|
62
|
+
PATTERN
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/sevencop/version.rb
CHANGED
data/lib/sevencop.rb
CHANGED
@@ -24,3 +24,4 @@ require_relative 'rubocop/cop/sevencop/rspec_describe_http_endpoint'
|
|
24
24
|
require_relative 'rubocop/cop/sevencop/rspec_empty_line_after_let'
|
25
25
|
require_relative 'rubocop/cop/sevencop/rspec_examples_in_same_group'
|
26
26
|
require_relative 'rubocop/cop/sevencop/rspec_memoized_helper_block_delimiter'
|
27
|
+
require_relative 'rubocop/cop/sevencop/rspec_rails_have_http_status'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sevencop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.37.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01
|
11
|
+
date: 2024-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- lib/rubocop/cop/sevencop/rspec_empty_line_after_let.rb
|
77
77
|
- lib/rubocop/cop/sevencop/rspec_examples_in_same_group.rb
|
78
78
|
- lib/rubocop/cop/sevencop/rspec_memoized_helper_block_delimiter.rb
|
79
|
+
- lib/rubocop/cop/sevencop/rspec_rails_have_http_status.rb
|
79
80
|
- lib/sevencop.rb
|
80
81
|
- lib/sevencop/config_loader.rb
|
81
82
|
- lib/sevencop/cop_concerns.rb
|