rspec-rails-api 0.1.4 → 0.1.5

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: ca1fda3905c2dd0831009c51f1cf41aa75538aed6f635b87cb12828e5db69476
4
- data.tar.gz: e965376d3c9c53a55537333f55b9c6165d23335f78b8ca4d030fa815dae0791b
3
+ metadata.gz: a0c5ddec517d805e43305c00f7b7baa19373acb3d8fe55bca724e521e57cc8e3
4
+ data.tar.gz: 9f1ed792f16c075e140610902f8d7671d13d03483115066e55ca48c43b42f8d7
5
5
  SHA512:
6
- metadata.gz: 85a1a31174c7c674ccadcef0481dd249c7169f41e0aa8c3a52f1f542970948ca9e4a885900384871c2245e9b5c968d4f798e6d2d0b6e4284906c26bbd12c33ca
7
- data.tar.gz: cb7d32f0db0d82961d2f43647c6b65d6000e4a6605e9439806d3534ad7dccd79122a9659c06c5f71bf737849260a2488afb978bde83f3675587dfb9ec0b0a131
6
+ metadata.gz: 501da0c03e7375b0097e95d951b1db831743564abd88dd4d28e719be5ee84701daaa9583160a0610dcd3cde35b143b8199b07e6bf684e0261fd26afca5b67d23
7
+ data.tar.gz: 5eaf88f5467cb5d5a12ca311e53778507534ff5090e85647581899bc5c4b7ab1f9914aea97f663bc7474faaede720fe66ff3d350ff0ba12982361b0772a00ae2
data/.gitignore CHANGED
@@ -12,3 +12,5 @@
12
12
 
13
13
  # Ignore lockfile for Gemfile
14
14
  Gemfile.lock
15
+
16
+ .byebug_history
data/CHANGELOG.md ADDED
@@ -0,0 +1,35 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ ## 0.1.5 - 2019-10-31
5
+
6
+ ### Fixed
7
+
8
+ - Fixed issue with POST/PUT/DELETE requests with no `request_params`
9
+ - Improved documentation (integration with Devise, typos and mistakes)
10
+
11
+ ## 0.1.4 - 2019-10-24
12
+
13
+ ### Added
14
+
15
+ - Added support for arrays of objects in request parameters
16
+
17
+ ## 0.1.3 - 2019-10-23
18
+
19
+ ### Added
20
+
21
+ - Added ability to document API descriptions, servers, etc... from the RSpec helper files
22
+
23
+ ## 0.1.2 - 2019-10-22
24
+
25
+ ### Added
26
+
27
+ - Added `item` property for arrays descriptions
28
+
29
+ ## 0.1.1 - 2019-10-22
30
+
31
+ - Added support for custom headers in request examples (useful for `visit` method)
32
+
33
+ ## 0.1.0 - 2019-10-21
34
+
35
+ Initial release
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # RspecRailsApiDoc
1
+ # RSpecRailsApiDoc
2
2
 
3
3
  > An RSpec plugin to test Rails api responses and generate swagger
4
4
  > documentation
@@ -34,7 +34,7 @@ require 'rails_helper'
34
34
  require 'rspec_rails_api'
35
35
 
36
36
  RSpec.configure do |config|
37
- config.include Rspec::Rails::Api::DSL::Example
37
+ config.include RSpec::Rails::Api::DSL::Example
38
38
  end
39
39
 
40
40
  renderer = RSpec::Rails::Api::OpenApiRenderer.new
@@ -52,7 +52,7 @@ end
52
52
 
53
53
  RSpec.configuration.after(:suite) do
54
54
  # Default path is 'tmp/rspec_rails_api_output.json/yaml'
55
- renderer.write_files Rails.root.join('public', 'swagger_doc'), only: :json
55
+ renderer.write_files Rails.root.join('public', 'swagger_doc'), only: [:json]
56
56
  end
57
57
  ```
58
58
 
@@ -71,7 +71,68 @@ end
71
71
 
72
72
  ## Configuration
73
73
 
74
- TODO
74
+ **TODO: This section is incomplete and the gem has no generator yet**
75
+
76
+ ### Integration with Devise
77
+
78
+ To use `sign_in` and `sign_out` from Devise in the acceptance tests, create a Devise support file:
79
+
80
+ ```rb
81
+ # spec/support/devise.rb
82
+ module DeviseAcceptanceSpecHelpers
83
+ include Warden::Test::Helpers
84
+
85
+ def sign_in(resource_or_scope, resource = nil)
86
+ resource ||= resource_or_scope
87
+ scope = Devise::Mapping.find_scope!(resource_or_scope)
88
+ login_as(resource, scope: scope)
89
+ end
90
+
91
+ def sign_out(resource_or_scope)
92
+ scope = Devise::Mapping.find_scope!(resource_or_scope)
93
+ logout(scope)
94
+ end
95
+ end
96
+ ```
97
+
98
+ Load this file in `rails_helper.rb`:
99
+
100
+ ```rb
101
+ #...
102
+ # Add additional requires below this line. Rails is not loaded until this point!
103
+ require 'support/devise'
104
+ #...
105
+ ```
106
+
107
+ Include the helper for acceptance specs:
108
+
109
+ ```rb
110
+ RSpec.configure do |config|
111
+ config.include DeviseAcceptanceSpecHelpers, type: :acceptance
112
+ end
113
+ ```
114
+
115
+ You can now use the methods as usual:
116
+
117
+ ```rb
118
+ # In a before block
119
+ before do
120
+ sign_in #...
121
+ end
122
+
123
+ # In examples
124
+ #...
125
+ for_code 200, 'Success' do |example|
126
+ sing_in #...
127
+ visit example
128
+
129
+ #...
130
+ end
131
+ #...
132
+ ```
133
+
134
+ This solution comes from [this article](https://makandracards.com/makandra/37161-rspec-devise-how-to-sign-in-users-in-request-specs)
135
+ by Arne Hartherz (MIT license).
75
136
 
76
137
  ## Usage
77
138
 
@@ -457,6 +518,6 @@ The gem is available as open source under the terms of the
457
518
 
458
519
  ## Code of Conduct
459
520
 
460
- Everyone interacting in the RspecRailsApiDoc project’s codebases, issue
521
+ Everyone interacting in the RSpecRailsApiDoc project’s codebases, issue
461
522
  trackers, chat rooms and mailing lists is expected to follow the
462
523
  [code of conduct](https://gitlab.com/experimentslabs/rspec-rails-api/blob/master/CODE_OF_CONDUCT.md).
@@ -18,7 +18,7 @@ RSpec.describe 'Categories', type: :acceptance do
18
18
  url: { type: :string, description: 'URL to this category' }
19
19
 
20
20
  entity :error,
21
- error: { type: :string, name: 'The error' }
21
+ error: { type: :string, description: 'The error' }
22
22
 
23
23
  entity :form_error,
24
24
  errors: {
@@ -74,7 +74,7 @@ module RSpec
74
74
  Utils.deep_set(@resources, "#{@current_resource}.paths.#{url}.actions.#{method}",
75
75
  description: description,
76
76
  statuses: {},
77
- params: [])
77
+ params: {})
78
78
 
79
79
  @current_url = url
80
80
  @current_method = method
@@ -30,6 +30,8 @@ module RSpec
30
30
  def merge_context(context)
31
31
  @metadata[:resources].deep_merge! context[:resources]
32
32
  @metadata[:entities].deep_merge! context[:entities]
33
+ # Save context to make the fixture (will be saved in the reference project)
34
+ # File.write ::Rails.root.join('tmp', 'meta.yaml'), context.to_yaml
33
35
  end
34
36
 
35
37
  def write_files(path = nil, only: %i[yaml json])
@@ -3,7 +3,7 @@
3
3
  module RSpec
4
4
  module Rails
5
5
  module Api
6
- VERSION = '0.1.4'
6
+ VERSION = '0.1.5'
7
7
  end
8
8
  end
9
9
  end
@@ -17,6 +17,11 @@ Gem::Specification.new do |spec|
17
17
  TXT
18
18
  spec.homepage = 'https://gitlab.com/experimentslabs/rspec-rails-api'
19
19
  spec.license = 'MIT'
20
+ spec.metadata = {
21
+ 'source_code_uri' => 'https://gitlab.com/experimentslabs/rspec-rails-api',
22
+ 'bug_tracker_uri' => 'https://gitlab.com/experimentslabs/rspec-rails-api/issues',
23
+ 'changelog_uri' => 'https://gitlab.com/experimentslabs/rspec-rails-api/blob/master/CHANGELOG.md',
24
+ }
20
25
 
21
26
  # Specify which files should be added to the gem when it is released.
22
27
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -29,6 +34,7 @@ Gem::Specification.new do |spec|
29
34
 
30
35
  spec.add_development_dependency 'activesupport', '>= 5.2'
31
36
  spec.add_development_dependency 'bundler', '~> 1.17'
37
+ spec.add_development_dependency 'byebug'
32
38
  spec.add_development_dependency 'rake', '~> 10.0'
33
39
  spec.add_development_dependency 'rspec', '~> 3.0'
34
40
  spec.add_development_dependency 'rubocop'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-rails-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel Tancoigne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-24 00:00:00.000000000 Z
11
+ date: 2019-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.17'
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,7 @@ files:
122
136
  - ".rspec"
123
137
  - ".rubocop.yml"
124
138
  - ".travis.yml"
139
+ - CHANGELOG.md
125
140
  - CODE_OF_CONDUCT.md
126
141
  - Gemfile
127
142
  - LICENSE.txt
@@ -144,7 +159,10 @@ files:
144
159
  homepage: https://gitlab.com/experimentslabs/rspec-rails-api
145
160
  licenses:
146
161
  - MIT
147
- metadata: {}
162
+ metadata:
163
+ source_code_uri: https://gitlab.com/experimentslabs/rspec-rails-api
164
+ bug_tracker_uri: https://gitlab.com/experimentslabs/rspec-rails-api/issues
165
+ changelog_uri: https://gitlab.com/experimentslabs/rspec-rails-api/blob/master/CHANGELOG.md
148
166
  post_install_message:
149
167
  rdoc_options: []
150
168
  require_paths: