Extracting out APIMetadata from Formatter

This commit is contained in:
Garima Singh
2016-08-12 08:21:41 +08:00
parent 4c533caf68
commit 9c250cffe1
4 changed files with 180 additions and 34 deletions

View File

@@ -1,5 +1,6 @@
require 'rspec/core/formatters'
require 'swagger_helper'
require 'swagger_rails/rspec/api_metadata'
module SwaggerRails
module RSpec
@@ -17,12 +18,11 @@ module SwaggerRails
end
def example_group_finished(notification)
metadata = notification.group.metadata
return unless metadata.has_key?(:response_code)
metadata = APIMetadata.new(notification.group.metadata)
return unless metadata.response_example?
swagger_doc = @swagger_docs[metadata[:swagger_doc]] || @swagger_docs.values.first
swagger_data = swagger_data_from(metadata)
swagger_doc.deep_merge!(swagger_data)
swagger_doc = @swagger_docs[metadata.swagger_doc] || @swagger_docs.values.first
swagger_doc.deep_merge!(metadata.swagger_data)
end
def stop(notification)
@@ -36,35 +36,6 @@ module SwaggerRails
@output.puts 'Swagger Doc generated'
end
private
def swagger_data_from(metadata)
{
paths: {
metadata[:path_template] => {
metadata[:http_verb] => operation_from(metadata)
}
}
}
end
def operation_from(metadata)
{
tags: [ find_root_of(metadata)[:description] ] ,
summary: metadata[:summary],
description: metadata[:operation_description],
consumes: metadata[:consumes],
produces: metadata[:produces],
parameters: metadata[:parameters],
responses: { metadata[:response_code] => metadata[:response] }
}
end
def find_root_of(metadata)
parent = metadata[:parent_example_group]
parent.nil? ? metadata : find_root_of(parent)
end
end
end
end