Autogeneration of API documentation using the Blueprint format from request specs.
You can find more about Blueprint at http://apiblueprint.org
This is a heavily refactored fork of calderalabs/rspec_api_blueprint with several added features, mostly related to configuration options giving you more control over the output format.
Is a configuration object that you can use to store settings about how you want RspecApiBlueprint to write your documentation. The following configuration options are available via Configuration#method=
:
#sort_key
: (default::location
) The attribute applied to each spec to determine the order it should be printed in the documentation file. This can be useful for git-tracked documentation folders in order to track changes to the API as the requests and response change in your test suite. Available options are::location
,:line_number
.#docs_folder
: (default:'./api_docs/'
) The folder in which to write/store output documentation files.#enabled
: (default:true
) Record/write requests and responses from Rspec api/integration specs.#request_headers
: (default::none
) Request headers to record and write into the documentation. Available options are:all
,:none
,only: ['header', 'names', 'to', 'record']
, and,except: ['header', 'names', 'to', 'ignore']
.#response_headers
: (default::none
): Exactly the same as #request_headers, but for the responses.
Add this line to your application's Gemfile, probably under group :test
:
gem 'rspec_api_blueprint', git: 'https://github.com/drewcimino/rspec_api_blueprint.git'
And then execute:
$ bundle
Install it yourself:
$ gem install rspec_api_blueprint
and
require 'rspec_api_blueprint'
as needed.
Write using the following convention:
- Tests must be placed in
spec/requests
folder or they have to be tagged withtype: :request
- Top level descriptions are named after the model (plural form) followed by the word “Requests”. For a example model called Arena it would be “Arenas Requests”.
- Second level descriptions are actions in the form of “VERB path”. For the show action of the Arenas controller it would be “GET /arenas/{id}”.
Example:
describe 'Arenas Requests' do
describe 'GET /v1/arenas/{id}' do
it 'responds with the requested arena' do
arena = create :arena, foursquare_id: '5104'
get v1_arena_path(arena)
response.status.should eq(200)
end
end
end
The output:
# GET /v1/arenas/{id}
+ Response 200 (application/json)
{
"arena": {
"id": "4e9dbbc2-830b-41a9-b7db-9987735a0b2a",
"name": "Clinton St. Baking Co. & Restaurant",
"latitude": 40.721294,
"longitude": -73.983994,
"foursquare_id": "5104"
}
}
401, 403 and 301 statuses are ignored since rspec produces an undesired output.
TODO: Add option to choose ignored statuses.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request