rspec-rails-api 0.1.4 → 0.1.5

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: 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: