mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-24 14:56:41 +00:00
simplify validation blocks and use correct scope
This commit is contained in:
parent
7f0e437f8b
commit
732cab994c
@ -77,7 +77,8 @@ module Rswag
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "returns a #{metadata[:response][:code]} response" do
|
it "returns a #{metadata[:response][:code]} response" do
|
||||||
assert_response_matches_metadata(example.metadata, &block)
|
assert_response_matches_metadata(metadata)
|
||||||
|
block.call(response) if block_given?
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
before do |example|
|
before do |example|
|
||||||
@ -86,6 +87,7 @@ module Rswag
|
|||||||
|
|
||||||
it "returns a #{metadata[:response][:code]} response" do |example|
|
it "returns a #{metadata[:response][:code]} response" do |example|
|
||||||
assert_response_matches_metadata(example.metadata, &block)
|
assert_response_matches_metadata(example.metadata, &block)
|
||||||
|
example.instance_exec(response, &block) if block_given?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -27,8 +27,8 @@ module Rswag
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def assert_response_matches_metadata(metadata, &block)
|
def assert_response_matches_metadata(metadata)
|
||||||
ResponseValidator.new.validate!(metadata, response, &block)
|
ResponseValidator.new.validate!(metadata, response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -11,13 +11,12 @@ module Rswag
|
|||||||
@config = config
|
@config = config
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate!(metadata, response, &block)
|
def validate!(metadata, response)
|
||||||
swagger_doc = @config.get_swagger_doc(metadata[:swagger_doc])
|
swagger_doc = @config.get_swagger_doc(metadata[:swagger_doc])
|
||||||
|
|
||||||
validate_code!(metadata, response.code)
|
validate_code!(metadata, response.code)
|
||||||
validate_headers!(metadata, response.headers)
|
validate_headers!(metadata, response.headers)
|
||||||
validate_body!(metadata, swagger_doc, response.body, &block)
|
validate_body!(metadata, swagger_doc, response.body)
|
||||||
block.call(response) if block_given?
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@ -55,20 +55,6 @@ module Rswag
|
|||||||
it { expect { call }.to raise_error /Expected response body/ }
|
it { expect { call }.to raise_error /Expected response body/ }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'validation block provided' do
|
|
||||||
let(:call) { subject.validate!(metadata, response, &block) }
|
|
||||||
|
|
||||||
context 'block passes' do
|
|
||||||
let(:block) { Proc.new { |response| expect(response.code).to eq('200') } }
|
|
||||||
it { expect { call }.to_not raise_error }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'block fails' do
|
|
||||||
let(:block) { Proc.new { |response| expect(response.code).to eq('201') } }
|
|
||||||
it { expect { call }.to raise_error RSpec::Expectations::ExpectationNotMetError }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'referenced schemas' do
|
context 'referenced schemas' do
|
||||||
before do
|
before do
|
||||||
swagger_doc[:definitions] = {
|
swagger_doc[:definitions] = {
|
||||||
|
|||||||
@ -22,7 +22,9 @@ describe 'Blogs API', type: :request, swagger_doc: 'v1/swagger.json' do
|
|||||||
schema '$ref' => '#/definitions/errors_object'
|
schema '$ref' => '#/definitions/errors_object'
|
||||||
|
|
||||||
let(:blog) { { title: 'foo' } }
|
let(:blog) { { title: 'foo' } }
|
||||||
run_test!
|
run_test! do |response|
|
||||||
|
expect(response.body).to include("can't be blank")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -37,7 +39,6 @@ describe 'Blogs API', type: :request, swagger_doc: 'v1/swagger.json' do
|
|||||||
|
|
||||||
response '200', 'success' do
|
response '200', 'success' do
|
||||||
schema type: 'array', items: { '$ref' => '#/definitions/blog' }
|
schema type: 'array', items: { '$ref' => '#/definitions/blog' }
|
||||||
run_test!
|
|
||||||
end
|
end
|
||||||
|
|
||||||
response '406', 'unsupported accept header' do
|
response '406', 'unsupported accept header' do
|
||||||
|
|||||||
@ -82,15 +82,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
|
||||||
"description": "success",
|
|
||||||
"schema": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"$ref": "#/definitions/blog"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"406": {
|
"406": {
|
||||||
"description": "unsupported accept header"
|
"description": "unsupported accept header"
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user