Commit 36fa6734 by andrew morton

Add a helper for declaring schemas

parent db0a1d45
...@@ -87,7 +87,7 @@ module RSpec ...@@ -87,7 +87,7 @@ module RSpec
def parameter name, attributes = {} def parameter name, attributes = {}
attributes.symbolize_keys! attributes.symbolize_keys!
# look for $refs # Look for $refs
if name.respond_to?(:has_key?) if name.respond_to?(:has_key?)
ref = name.delete(:ref) || name.delete('ref') ref = name.delete(:ref) || name.delete('ref')
full_param = resolve_document(metadata).resolve_ref(ref) full_param = resolve_document(metadata).resolve_ref(ref)
...@@ -241,6 +241,15 @@ module RSpec ...@@ -241,6 +241,15 @@ module RSpec
def capture_example def capture_example
metadata[:capture_examples] = true metadata[:capture_examples] = true
end end
def schema definition
definition.symbolize_keys!
ref = definition.delete(:ref)
schema = ref ? { '$ref' => ref } : definition
metadata[:swagger_response][:schema] = schema
end
end end
end end
end end
......
...@@ -217,7 +217,7 @@ RSpec.describe RSpec::Swagger::Helpers::Response do ...@@ -217,7 +217,7 @@ RSpec.describe RSpec::Swagger::Helpers::Response do
end end
subject { klass.new } subject { klass.new }
before { subject.metadata = {swagger_object: :response} } before { subject.metadata = { swagger_object: :response, swagger_response: {} } }
describe '#capture_example' do describe '#capture_example' do
it "sets the capture metadata" do it "sets the capture metadata" do
...@@ -225,4 +225,22 @@ RSpec.describe RSpec::Swagger::Helpers::Response do ...@@ -225,4 +225,22 @@ RSpec.describe RSpec::Swagger::Helpers::Response do
.to change{ subject.metadata[:capture_examples] }.to(true) .to change{ subject.metadata[:capture_examples] }.to(true)
end end
end end
describe '#schema' do
it 'stores the schema' do
subject.schema({
type: :object, properties: { title: { type: 'string' } }
})
expect(subject.metadata[:swagger_response]).to include(schema: {
type: :object, properties: { title: { type: 'string' } }
})
end
it 'supports refs' do
subject.schema ref: '#/definitions/Pet'
expect(subject.metadata[:swagger_response]).to include(schema: { '$ref' => '#/definitions/Pet' })
end
end
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment