19 Commits

Author SHA1 Message Date
Greg Myers
16e40bfcf3 Merge pull request #475 from rswag/fix/workflow
Fix GH Actions being unable to bundle
2022-01-22 22:13:43 +00:00
Greg Myers
8c6aed4a9e Fix correct gem command
upgrade vs update
2022-01-22 22:12:27 +00:00
Greg Myers
8e59d2b2f2 Fix GH Actions being unable to bundle
Error looks similar to https://github.com/rubygems/rubygems/issues/5150
2022-01-22 22:10:24 +00:00
Greg Myers
a813b63bcc Merge pull request #450 from marksiemers/master
Loosen gemspec requirement to allow rails 7.0
2021-12-03 22:41:41 +00:00
Greg Myers
076f71388c Merge pull request #453 from jswk/update-swagger-ui
Update swagger-ui to 3.52.5
2021-12-03 22:39:57 +00:00
Greg Myers
9cfb5bc557 Merge pull request #441 from jaydorsey/jay/better_error_message
Better error message for missing let
2021-12-03 22:39:27 +00:00
Jakub Sawicki
6cafc0c0e5 Update swagger-ui to 3.52.5 2021-10-15 12:06:55 +02:00
Jay Dorsey
86c512f639 Add single quotes around parameter name 2021-09-24 16:11:44 -04:00
Jay Dorsey
32638062d7 Better error message for missing let
I've run into this problem a number of times. The original error message
is actually a `NoMethodError` and it's not always immediately clear what
the solution is, particuarly if you're new to rspec or rswag

Wanted to see if this kind of behavior is something that the rswag team
would be interested in adopting. I have a few other of these in mind
(will do as small PRs, with tests)
2021-09-24 16:10:40 -04:00
Mark Siemers
dd6530b718 Loosen gemspec requirement to allow rails 7.0 2021-09-22 17:32:58 -04:00
Blake Erickson
095906da58 Merge pull request #442 from jaydorsey/jay/mini_racer
Replace therubyracer with mini_racer
2021-08-10 07:12:13 -06:00
Jay Dorsey
a40a06646f Remove therubyracer from contributing 2021-08-08 23:00:40 -04:00
Jay Dorsey
42c8e123a8 Replace therubyracer with mini_racer
therubyracer doesn't appear to be under active development

I didn't need this for PRs that I was doing, but a `bundle install`
failed because of it. I know I can specify the groups as a workaround
but replacing this seems like it might reduce a small barrier to
contributing
2021-08-08 22:40:33 -04:00
Greg Myers
c85fa3b37a Update README.md 2021-06-16 14:46:04 +01:00
Blake Erickson
985f444834 Merge pull request #426 from smridge/add-reference-to-contributing-doc
Update Contributing Doc with Bundle Install Troubleshooting
2021-05-13 05:09:51 -06:00
Sarah Ridge
1d2a25e231 Update Contributing Doc with Bundle Install Troubleshooting 2021-05-11 09:47:08 -04:00
Blake Erickson
a0680506e2 Merge pull request #416 from mynnx/docs-include-multiple-tags
Document using multiple tags
2021-04-22 17:27:18 -06:00
mynnx
4a32108f78 Document using multiple tags 2021-04-08 15:44:07 -07:00
Blake Erickson
05e22c3bd7 Merge pull request #407 from rswag/revert-300-master
Revert "Add a macro for complexes multiparts"
2021-03-06 14:57:46 -07:00
12 changed files with 60 additions and 15 deletions

View File

@@ -31,6 +31,7 @@ jobs:
- name: Install dependencies
run: |
gem update --system
bundle install
cd rswag-ui && npm install

View File

@@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased]
### Changed
- Update swagger-ui to 3.52.5
## [2.4.0] - 2021-02-09
### Added
- Added `SWAGGER_DRY_RUN` env variable [#274](https://github.com/rswag/rswag/pull/274)

View File

@@ -57,11 +57,11 @@ Push to your fork and [submit a Pull Request][pr].
## Updating Swagger UI
Find the latest versions of swagger-ui here:
Find the latest versions of swagger-ui here:
https://github.com/swagger-api/swagger-ui/releases
Update the swagger-ui-dist version in the rswag-ui dependencies
```
```
./rswag-ui/package.json
```

View File

@@ -43,7 +43,7 @@ group :development do
end
group :assets do
gem 'therubyracer'
gem 'mini_racer'
gem 'uglifier'
end

View File

@@ -5,6 +5,8 @@ rswag
OpenApi 3.0 and Swagger 2.0 compatible!
Seeking maintainers! Got a pet-bug that needs fixing? Just let us know in your issue/pr that you'd like to step up to help.
Rswag extends rspec-rails "request specs" with a Swagger-based DSL for describing and testing API operations. You describe your API operations with a succinct, intuitive syntax, and it automaticaly runs the tests. Once you have green tests, run a rake task to auto-generate corresponding Swagger files and expose them as YAML or JSON endpoints. Rswag also provides an embedded version of the awesome [swagger-ui](https://github.com/swagger-api/swagger-ui) that's powered by the exposed file. This toolchain makes it seamless to go from integration specs, which youre probably doing in some form already, to living documentation for your API consumers.
Api Rswag creates [Swagger](http://swagger.io) tooling for Rails API's. Generate beautiful API documentation, including a UI to explore and test operations, directly from your rspec integration tests.
@@ -18,7 +20,7 @@ Once you have an API that can describe itself in Swagger, you've opened the trea
|Rswag Version|Swagger (OpenAPI) Spec.|swagger-ui|
|----------|----------|----------|
|[master](https://github.com/rswag/rswag/tree/master)|3.0.3|3.42.0|
|[master](https://github.com/rswag/rswag/tree/master)|3.0.3|3.52.5|
|[2.3.0](https://github.com/rswag/rswag/tree/2.3.0)|3.0.3|3.23.11|
|[2.2.0](https://github.com/rswag/rswag/tree/2.2.0)|2.0|3.18.2|
|[1.6.0](https://github.com/rswag/rswag/tree/1.6.0)|2.0|2.2.5|
@@ -136,7 +138,7 @@ There is also a generator which can help get you started `rails generate rspec:s
path '/blogs/{id}' do
get 'Retrieves a blog' do
tags 'Blogs'
tags 'Blogs', 'Another Tag'
produces 'application/json', 'application/xml'
parameter name: :id, in: :path, type: :string

View File

@@ -15,5 +15,5 @@ Gem::Specification.new do |s|
s.files = Dir['{lib}/**/*'] + ['MIT-LICENSE', 'Rakefile']
s.add_dependency 'railties', '>= 3.1', '< 7.0'
s.add_dependency 'railties', '>= 3.1', '< 7.1'
end

View File

@@ -194,12 +194,36 @@ module Rswag
def build_json_payload(parameters, example)
body_param = parameters.select { |p| p[:in] == :body }.first
body_param ? example.send(body_param[:name]).to_json : nil
return nil unless body_param
raise(MissingParameterError, body_param[:name]) unless example.respond_to?(body_param[:name])
example.send(body_param[:name]).to_json
end
def doc_version(doc)
doc[:openapi] || doc[:swagger] || '3'
end
end
class MissingParameterError < StandardError
attr_reader :body_param
def initialize(body_param)
@body_param = body_param
end
def message
<<~MSG
Missing parameter '#{body_param}'
Please check your spec. It looks like you defined a body parameter,
but did not declare usage via let. Try adding:
let(:#{body_param}) {}
MSG
end
end
end
end

View File

@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
s.files = Dir['{lib}/**/*'] + ['MIT-LICENSE', 'Rakefile']
s.add_dependency 'activesupport', '>= 3.1', '< 7.0'
s.add_dependency 'railties', '>= 3.1', '< 7.0'
s.add_dependency 'activesupport', '>= 3.1', '< 7.1'
s.add_dependency 'railties', '>= 3.1', '< 7.1'
s.add_dependency 'json-schema', '~> 2.2'
end

View File

@@ -160,6 +160,21 @@ module Rswag
end
end
context 'missing body parameter' do
before do
metadata[:operation][:parameters] = [{ name: 'comment', in: :body, schema: { type: 'object' } }]
allow(example).to receive(:comment).and_raise(NoMethodError, "undefined method 'comment'")
allow(example).to receive(:respond_to?).with(:'Content-Type')
allow(example).to receive(:respond_to?).with('comment').and_return(false)
end
it 'uses the referenced metadata to build the request' do
expect do
request[:payload]
end.to raise_error(Rswag::Specs::MissingParameterError, /Missing parameter 'comment'/)
end
end
context 'form payload' do
before do
metadata[:operation][:consumes] = ['multipart/form-data']

View File

@@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"swagger-ui-dist": {
"version": "3.42.0",
"resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.42.0.tgz",
"integrity": "sha512-hTNX6cX7KWtBZgk6ZQSOzsBJhqdCmD5NOIjb6dBPKSnYZidSkIXOcaPMR3+kwxLrj8bDC881bSDlNbLsHikacg=="
"version": "3.52.5",
"resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.52.5.tgz",
"integrity": "sha512-8z18eX8G/jbTXYzyNIaobrnD7PSN7yU/YkSasMmajrXtw0FGS64XjrKn5v37d36qmU3o1xLeuYnktshRr7uIFw=="
}
}
}

View File

@@ -3,6 +3,6 @@
"version": "1.0.0",
"private": true,
"dependencies": {
"swagger-ui-dist": "3.42.0"
"swagger-ui-dist": "3.52.5"
}
}

View File

@@ -15,6 +15,6 @@ Gem::Specification.new do |s|
s.files = Dir.glob('{lib,node_modules}/**/*') + ['MIT-LICENSE', 'Rakefile' ]
s.add_dependency 'actionpack', '>=3.1', '< 7.0'
s.add_dependency 'railties', '>= 3.1', '< 7.0'
s.add_dependency 'actionpack', '>=3.1', '< 7.1'
s.add_dependency 'railties', '>= 3.1', '< 7.1'
end