wip:swagger-based dsl for rspec

This commit is contained in:
domaindrivendev
2016-03-09 16:58:38 -08:00
parent fc877b4047
commit d579dab7d8
12 changed files with 246 additions and 195 deletions

View File

@@ -1,6 +1,8 @@
class Blog < ActiveRecord::Base
attr_accessible :content, :title
validates :content, presence: true
def as_json(options)
{
title: title,

View File

@@ -0,0 +1,45 @@
require 'rails_helper'
describe 'Blogs API', doc: 'blogs/v1' do
path '/blogs' do
operation 'post', 'creates a new blog' do
consumes 'application/json'
produces 'application/json'
body :blog
let(:blog) { { title: 'foo', content: 'bar' } }
response '201', 'valid request' do
run_test!
end
response '422', 'invalid request' do
let(:blog) { { title: 'foo' } }
run_test!
end
end
operation 'get', 'searches existing blogs' do
produces 'application/json'
response '200', 'valid request' do
run_test!
end
end
end
path '/blogs/{id}' do
operation 'get', 'retreives a specific blog' do
produces 'application/json'
parameter :id, 'path'
response '200', 'blog found' do
let(:blog) { Blog.create(title: 'foo', content: 'bar') }
let(:id) { blog.id }
run_test!
end
end
end
end

View File

@@ -1,19 +0,0 @@
require 'rails_helper'
require 'swagger_rails/testing/test_helpers'
describe 'V1 Contract' do
include SwaggerRails::TestHelpers
swagger_doc 'v1/swagger.json'
# TODO: improve DSL
it 'exposes an API for managing blogs' do
swagger_test '/blogs', 'post'
swagger_test '/blogs', 'get'
swagger_test '/blogs/{id}', 'get' do
set id: Blog.last!.id
end
end
end

View File

@@ -89,4 +89,7 @@ RSpec.configure do |config|
# as the one that triggered the failure.
Kernel.srand config.seed
=end
require 'swagger_rails/rspec/adapter'
config.extend SwaggerRails::RSpec::Adapter
end