Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gerando Documentação de API via RSpec

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

Gerando Documentação de API via RSpec

Apresentação utilizando a gem RSpec Api Documentation para gerar uma documentação via RSpec.

Avatar for Ricardo Pontes

Ricardo Pontes

May 16, 2015

More Decks by Ricardo Pontes

Other Decks in Technology

Transcript

  1. require 'spec_helper' require 'rspec_api_documentation/dsl' resource "Bandas" do get "/bandas" do

    example "Listando todas as bandas" do do_request expect(status).to eq(200) end end end spec/acceptance/bandas_spec.rb
  2. RspecApiDocumentation.configure do |config| # Para onde será exportado: config.docs_dir =

    Rails.root.join("doc", "api") # Formatos de exportação: # :json, :html, :combined_text, :combined_json, # :json_iodocs, :textile, :markdown, :append_json config.format = [:html, :json] # Endereço utilizado pelo cURL config.curl_host = 'http://127.0.0.1:3000/' # Muda o nome da API nas páginas config.api_name = "API Documentation" # Muda o estilo da página HTML config.html_embedded_css_file = nil . . . end spec/acceptance_helper.rb
  3. resource "Bandas" do header "Accept", "application/json" header "Content-Type", "application/json" post

    "/bandas" do # Parâmetros enviados na requisição parameter :nome, “Nome da Banda", required: true, scope: :banda parameter :estilo, “Estilo musical da banda", scope: :banda # Parâmetros que retornam da requisição response_field :nome, “Nome da banda", scope: :banda, "Type" => "String" response_field :estilo, “Estilo musical", scope: :banda, "Type" => "String" # Preenchendo os dados para o request let(:nome) { "Helloween" } let(:estilo) { "Heavy Metal" } # Transforma os parâmetros em JSON para serem enviados let(:raw_post) { params.to_json } example_request “Criando uma Banda" do explanation "Primeiro, cria uma banda, e retorna os dados da mesma criada" order = JSON.parse(response_body) expect(order.except("id", "created_at", "updated_at")).to eq({ "nome" => nome, "estilo" => estilo }) expect(status).to eq(201) end end end spec/acceptance/bandas_spec.rb