rspec-request_describer 0.5.0 → 0.6.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: 813d1506690f4cf7e4d0857dcdf1435fef147991f7ed62c38bf84c9cde8b7939
4
- data.tar.gz: 0f4344c220644c8219596c95131fa0a39b550ed1495c93a438cd04f5e5f86f1f
3
+ metadata.gz: de9d2d420aea6eaecc42d619a9b1d8f0088def0dd316a88fa13861b53437ef98
4
+ data.tar.gz: 17cd3e64fe24ac5f0818f77514ee340cd94dc3c879544ea48bddaed84f425862
5
5
  SHA512:
6
- metadata.gz: b01cd40a7f9e7053ee8b513adb33457d64701eb5afe710ecc22e784f300710a14f822d99d6568bcb43a46ca79f73c8b8e0e2d09396bc344f43a97d474cd4a8b0
7
- data.tar.gz: 6aee8e0079e15f6e16061ef34289a7d2c7271591cb65fccf3772c83c1db0a0832e2a47ba52586db6dea756abcce3bbec9cb9ad5d7b7b1fe326c7c6958ac981de
6
+ metadata.gz: f0a1c4c9cb78bc8030407b1933c5ce8f63ad42ee2e7eb115639800ef431d6a149c436241fc9b4daecd1e2b3cd9ef21924426da68a70b2a372a5b30b92bd671d0
7
+ data.tar.gz: 117491f2b88edde6a0f3a7271b99f5223a6389da5624b35bb014408f5b6539e64d5235d66ea01de9599f88007fb58520201e9068210f74ec872aa6052a5199da
data/.rubocop.yml CHANGED
@@ -1,13 +1,4 @@
1
- Metrics/AbcSize:
2
- Enabled: false
3
-
4
- Metrics/BlockLength:
5
- Enabled: false
6
-
7
- Metrics/LineLength:
8
- Enabled: false
9
-
10
- Metrics/MethodLength:
1
+ Metrics:
11
2
  Enabled: false
12
3
 
13
4
  Style/Documentation:
data/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.6.0 - 2024-08-02
6
+
7
+ ### Changed
8
+
9
+ - Drop Ruby 2.6- support.
10
+
11
+ ### Fixed
12
+
13
+ - Reduce some files from gem package.
14
+ - Correct some RuboCop offenses.
15
+
5
16
  ## 0.5.0 - 2024-03-28
6
17
 
7
18
  ### Added
data/README.md CHANGED
@@ -12,33 +12,18 @@ This gem is designed for:
12
12
 
13
13
  ## Setup
14
14
 
15
- ### Install
16
-
17
15
  Add this line to your application's Gemfile:
18
16
 
19
17
  ```ruby
20
- gem 'rspec-request_describer'
21
- ```
22
-
23
- And then execute:
24
-
25
- ```
26
- bundle
27
- ```
28
-
29
- Or install it yourself as:
30
-
31
- ```
32
- gem install rspec-request_describer
18
+ group :test do
19
+ gem 'rspec-request_describer'
20
+ end
33
21
  ```
34
22
 
35
- ### Include
36
-
37
- Include `RSpec::RequestDescriber` to your example groups like this:
23
+ And then include `RSpec::RequestDescriber`:
38
24
 
39
25
  ```ruby
40
- require 'rspec/request_describer'
41
-
26
+ # spec/rails_helper.rb
42
27
  RSpec.configure do |config|
43
28
  config.include RSpec::RequestDescriber, type: :request
44
29
  end
@@ -46,15 +31,42 @@ end
46
31
 
47
32
  ## Usage
48
33
 
49
- Note that this is an example in a Rails app.
34
+ Write HTTP method and URL path in the top-level description of your request-specs.
50
35
 
51
- ### subject
36
+ ```ruby
37
+ # spec/requests/users/index_spec.rb
38
+ RSpec.describe 'GET /users' do
39
+ it 'returns 200' do
40
+ subject
41
+ expect(response).to have_http_status(200)
42
+ end
43
+ end
44
+ ```
52
45
 
53
- `RSpec::RequestDescriber` provides `subject` from its top-level description.
46
+ Internally, `RSpec::RequestDescriber` defines `subject` and some `let` from its top-level description like this:
54
47
 
55
48
  ```ruby
56
- # subject will be `get('/users')`.
57
49
  RSpec.describe 'GET /users' do
50
+ subject do
51
+ __send__(http_method, path, headers:, params:)
52
+ end
53
+
54
+ let(:http_method) do
55
+ 'get'
56
+ end
57
+
58
+ let(:path) do
59
+ '/users'
60
+ end
61
+
62
+ let(:headers) do
63
+ {}
64
+ end
65
+
66
+ let(:params) do
67
+ {}
68
+ end
69
+
58
70
  it 'returns 200' do
59
71
  subject
60
72
  expect(response).to have_http_status(200)
@@ -64,10 +76,9 @@ end
64
76
 
65
77
  ### headers
66
78
 
67
- If you want to modify request headers, change `headers` before calling `subject`.
79
+ If you want to modify request headers, change `headers`:
68
80
 
69
81
  ```ruby
70
- # `subject` will be `get('/users', headers: { 'Authorization' => 'token 12345' })`.
71
82
  RSpec.describe 'GET /users' do
72
83
  context 'with Authorization header' do
73
84
  before do
@@ -84,10 +95,9 @@ end
84
95
 
85
96
  ### params
86
97
 
87
- If you want to modify request parameters, change `params` before calling `subject`.
98
+ If you want to modify request parameters, change `params`:
88
99
 
89
100
  ```ruby
90
- # `subject` will be `get('/users', params: { 'sort' => 'id' })`.
91
101
  RSpec.describe 'GET /users' do
92
102
  context 'with sort parameter' do
93
103
  before do
@@ -111,10 +121,9 @@ end
111
121
  ### path parameters
112
122
 
113
123
  You can embed variables in URL path like `/users/:user_id`.
114
- In this example, the returned value of `user_id` method will be embedded as its real value.
124
+ In this example, the returned value from `#user_id` method will be embedded as its real value.
115
125
 
116
126
  ```ruby
117
- # `subject` will be `get("/users/#{user_id}")`.
118
127
  RSpec.describe 'GET /users/:user_id' do
119
128
  let(:user) do
120
129
  User.create(name: 'alice')
data/Rakefile CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RSpec
2
4
  module RequestDescriber
3
- VERSION = '0.5.0'.freeze
5
+ VERSION = '0.6.0'
4
6
  end
5
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec/request_describer/version'
2
4
 
3
5
  module RSpec
@@ -56,7 +58,7 @@ module RSpec
56
58
  let(:env) do
57
59
  headers.inject({}) do |result, (key, value)|
58
60
  key = key.to_s
59
- key = 'HTTP_' + key unless RESERVED_HEADER_NAMES.include?(key.downcase)
61
+ key = "HTTP_#{key}" unless RESERVED_HEADER_NAMES.include?(key.downcase)
60
62
  key = key.tr('-', '_').upcase
61
63
  result.merge(key => value)
62
64
  end
metadata CHANGED
@@ -1,42 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-request_describer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-28 00:00:00.000000000 Z
11
+ date: 2024-08-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
13
+ description:
14
14
  email:
15
15
  - r7kamura@gmail.com
16
16
  executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - ".github/workflows/test.yml"
21
- - ".gitignore"
22
20
  - ".rspec"
23
21
  - ".rubocop.yml"
24
22
  - CHANGELOG.md
25
- - Gemfile
26
- - Gemfile.lock
27
23
  - LICENSE.txt
28
24
  - README.md
29
25
  - Rakefile
30
26
  - lib/rspec/request_describer.rb
31
27
  - lib/rspec/request_describer/version.rb
32
- - rspec-request_describer.gemspec
33
- - spec/rspec/request_describer_spec.rb
34
- - spec/spec_helper.rb
35
28
  homepage: https://github.com/r7kamura/rspec-request_describer
36
29
  licenses:
37
30
  - MIT
38
31
  metadata: {}
39
- post_install_message:
32
+ post_install_message:
40
33
  rdoc_options: []
41
34
  require_paths:
42
35
  - lib
@@ -44,17 +37,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
44
37
  requirements:
45
38
  - - ">="
46
39
  - !ruby/object:Gem::Version
47
- version: '0'
40
+ version: '2.7'
48
41
  required_rubygems_version: !ruby/object:Gem::Requirement
49
42
  requirements:
50
43
  - - ">="
51
44
  - !ruby/object:Gem::Version
52
45
  version: '0'
53
46
  requirements: []
54
- rubygems_version: 3.4.19
55
- signing_key:
47
+ rubygems_version: 3.5.11
48
+ signing_key:
56
49
  specification_version: 4
57
50
  summary: An RSpec plugin to write self-documenting request-specs.
58
- test_files:
59
- - spec/rspec/request_describer_spec.rb
60
- - spec/spec_helper.rb
51
+ test_files: []
@@ -1,17 +0,0 @@
1
- name: test
2
-
3
- on:
4
- pull_request:
5
- push:
6
- branches:
7
- - master
8
-
9
- jobs:
10
- rspec:
11
- uses: r7kamura/workflows/.github/workflows/ruby-rspec.yml@main
12
- with:
13
- ruby-version: 2.7.4
14
- rubocop:
15
- uses: r7kamura/workflows/.github/workflows/ruby-rubocop.yml@main
16
- with:
17
- ruby-version: 2.7.4
data/.gitignore DELETED
@@ -1,11 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
-
10
- # rspec failure tracking
11
- .rspec_status
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in rspec-request_describer.gemspec
4
- gemspec
5
-
6
- gem 'rake'
7
- gem 'rspec'
8
- gem 'rubocop'
data/Gemfile.lock DELETED
@@ -1,52 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- rspec-request_describer (0.5.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- ast (2.4.0)
10
- diff-lcs (1.3)
11
- jaro_winkler (1.5.1)
12
- parallel (1.12.1)
13
- parser (2.5.3.0)
14
- ast (~> 2.4.0)
15
- powerpack (0.1.2)
16
- rainbow (3.0.0)
17
- rake (13.0.1)
18
- rspec (3.8.0)
19
- rspec-core (~> 3.8.0)
20
- rspec-expectations (~> 3.8.0)
21
- rspec-mocks (~> 3.8.0)
22
- rspec-core (3.8.0)
23
- rspec-support (~> 3.8.0)
24
- rspec-expectations (3.8.2)
25
- diff-lcs (>= 1.2.0, < 2.0)
26
- rspec-support (~> 3.8.0)
27
- rspec-mocks (3.8.0)
28
- diff-lcs (>= 1.2.0, < 2.0)
29
- rspec-support (~> 3.8.0)
30
- rspec-support (3.8.0)
31
- rubocop (0.61.1)
32
- jaro_winkler (~> 1.5.1)
33
- parallel (~> 1.10)
34
- parser (>= 2.5, != 2.5.1.1)
35
- powerpack (~> 0.1)
36
- rainbow (>= 2.2.2, < 4.0)
37
- ruby-progressbar (~> 1.7)
38
- unicode-display_width (~> 1.4.0)
39
- ruby-progressbar (1.10.0)
40
- unicode-display_width (1.4.0)
41
-
42
- PLATFORMS
43
- ruby
44
-
45
- DEPENDENCIES
46
- rake
47
- rspec
48
- rspec-request_describer!
49
- rubocop
50
-
51
- BUNDLED WITH
52
- 2.2.29
@@ -1,18 +0,0 @@
1
- lib = File.expand_path('lib', __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'rspec/request_describer/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'rspec-request_describer'
7
- spec.version = RSpec::RequestDescriber::VERSION
8
- spec.authors = ['Ryo Nakamura']
9
- spec.email = ['r7kamura@gmail.com']
10
- spec.summary = 'An RSpec plugin to write self-documenting request-specs.'
11
- spec.homepage = 'https://github.com/r7kamura/rspec-request_describer'
12
- spec.license = 'MIT'
13
-
14
- spec.files = `git ls-files -z`.split("\x0")
15
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
- spec.require_paths = ['lib']
18
- end
@@ -1,147 +0,0 @@
1
- require 'openssl'
2
-
3
- RSpec.describe RSpec::RequestDescriber do
4
- include RSpec::RequestDescriber
5
-
6
- def get(*args)
7
- [__method__, *args]
8
- end
9
-
10
- describe 'GET /users' do
11
- it 'calls #get' do
12
- is_expected.to eq(
13
- [
14
- :get,
15
- '/users',
16
- headers: {},
17
- params: {}
18
- ]
19
- )
20
- end
21
-
22
- context 'with headers' do
23
- let(:headers) do
24
- super().merge('Authorization' => 'token 12345')
25
- end
26
-
27
- it 'calls #get with HTTP_ prefixed and upper-cased headers' do
28
- is_expected.to eq(
29
- [
30
- :get,
31
- '/users',
32
- headers: { 'HTTP_AUTHORIZATION' => 'token 12345' },
33
- params: {}
34
- ]
35
- )
36
- end
37
- end
38
-
39
- context 'with headers including reserved header name' do
40
- let(:headers) do
41
- super().merge('Https' => 'on')
42
- end
43
-
44
- it 'calls #get with headers with non HTTP_ prefixed and upper-cased headers' do
45
- is_expected.to eq(
46
- [
47
- :get,
48
- '/users',
49
- headers: { 'HTTPS' => 'on' },
50
- params: {}
51
- ]
52
- )
53
- end
54
- end
55
-
56
- context 'with symbolized keys headers' do
57
- let(:headers) do
58
- super().merge(AUTHORIZATION: 'token 12345')
59
- end
60
-
61
- it 'calls #get with HTTP_ prefixed and stringified keys headers' do
62
- is_expected.to eq(
63
- [
64
- :get,
65
- '/users',
66
- headers: { 'HTTP_AUTHORIZATION' => 'token 12345' },
67
- params: {}
68
- ]
69
- )
70
- end
71
- end
72
-
73
- context 'with headers including request body' do
74
- before do
75
- headers['X-Signature'] = "sha1=#{OpenSSL::HMAC.hexdigest('SHA1', 'secret', request_body.to_s)}"
76
- end
77
-
78
- it 'calls #get with HTTP_ prefixed and stringified keys headers' do
79
- is_expected.to eq(
80
- [
81
- :get,
82
- '/users',
83
- headers: { 'HTTP_X_SIGNATURE' => 'sha1=5d61605c3feea9799210ddcb71307d4ba264225f' },
84
- params: {}
85
- ]
86
- )
87
- end
88
- end
89
-
90
- context 'with params' do
91
- let(:params) do
92
- super().merge('sort' => 'id')
93
- end
94
-
95
- it 'calls #get with params' do
96
- is_expected.to eq(
97
- [
98
- :get,
99
- '/users',
100
- headers: {},
101
- params: { 'sort' => 'id' }
102
- ]
103
- )
104
- end
105
- end
106
-
107
- context 'with symbolized keys params' do
108
- let(:params) do
109
- super().merge(sort: 'id')
110
- end
111
-
112
- it 'calls #get with stringified keys params' do
113
- is_expected.to eq(
114
- [
115
- :get,
116
- '/users',
117
- headers: {},
118
- params: { 'sort' => 'id' }
119
- ]
120
- )
121
- end
122
- end
123
- end
124
-
125
- describe 'GET /users/:user_id' do
126
- let(:user_id) do
127
- 1
128
- end
129
-
130
- it 'calles #get with embeded variable in URL path' do
131
- is_expected.to eq(
132
- [
133
- :get,
134
- '/users/1',
135
- headers: {},
136
- params: {}
137
- ]
138
- )
139
- end
140
- end
141
-
142
- context 'when the test case is under the top-level describe unexpectedly' do
143
- it 'handles the error' do
144
- expect { subject }.to raise_error(RSpec::RequestDescriber::IncorrectDescribe)
145
- end
146
- end
147
- end
data/spec/spec_helper.rb DELETED
@@ -1,21 +0,0 @@
1
- require 'rspec/request_describer'
2
-
3
- RSpec.configure do |config|
4
- config.expect_with :rspec do |expectations|
5
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
6
- end
7
-
8
- config.mock_with :rspec do |mocks|
9
- mocks.verify_partial_doubles = true
10
- end
11
-
12
- config.shared_context_metadata_behavior = :apply_to_host_groups
13
-
14
- config.filter_run_when_matching :focus
15
-
16
- config.disable_monkey_patching!
17
-
18
- config.warnings = true
19
-
20
- config.default_formatter = 'doc' if config.files_to_run.one?
21
- end