module RSpec::Rails::Api::DSL::ExampleGroup

All these methods will be available in example groups (anything but 'it', 'example', 'for_code')

Public Instance Methods

entity(type, fields) click to toggle source

Used to describe an entity

# File lib/rspec/rails/api/dsl/example_group.rb, line 20
def entity(type, fields)
  metadata[:rrad].add_entity type, fields
end
for_code(status_code, description = nil, doc_only: false, test_only: false, &block) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 77
def for_code(status_code, description = nil, doc_only: false, test_only: false, &block)
  description ||= Rack::Utils::HTTP_STATUS_CODES[status_code]

  metadata[:rrad].add_status_code(status_code, description) unless test_only

  describe "->#{test_only ? ' test' : ''} #{status_code} - #{description}" do
    execute_for_code_block(status_code, doc_only, block)
  end
end
on_action(action, url, description, &block) click to toggle source

Currently fill metadatas with the action

# File lib/rspec/rails/api/dsl/example_group.rb, line 71
def on_action(action, url, description, &block)
  metadata[:rrad].add_action(action, url, description)

  describe("#{action.upcase} #{url}", &block)
end
on_delete(url, description = nil, &block) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 66
def on_delete(url, description = nil, &block)
  on_action(:delete, url, description, &block)
end
on_get(url, description = nil, &block) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 50
def on_get(url, description = nil, &block)
  on_action(:get, url, description, &block)
end
on_patch(url, description = nil, &block) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 62
def on_patch(url, description = nil, &block)
  on_action(:patch, url, description, &block)
end
on_post(url, description = nil, &block) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 54
def on_post(url, description = nil, &block)
  on_action(:post, url, description, &block)
end
on_put(url, description = nil, &block) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 58
def on_put(url, description = nil, &block)
  on_action(:put, url, description, &block)
end
parameters(type, fields) click to toggle source

Used to describe a request or path param which will be available as reference

# File lib/rspec/rails/api/dsl/example_group.rb, line 25
def parameters(type, fields)
  metadata[:rrad].add_parameter type, fields
end
path_params(fields: nil, defined: nil) click to toggle source

Used to describe query parameters

# File lib/rspec/rails/api/dsl/example_group.rb, line 30
def path_params(fields: nil, defined: nil)
  if defined && !metadata[:rrad].parameters[defined]
    raise "Parameter #{defined} was not defined with the 'parameters' method"
  end

  fields ||= metadata[:rrad].parameters[defined]

  metadata[:rrad].add_path_params fields
end
request_params(attributes: nil, defined: nil) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 40
def request_params(attributes: nil, defined: nil)
  if defined && !metadata[:rrad].parameters[defined]
    raise "Parameter #{defined} was not defined with the 'parameters' method"
  end

  attributes ||= metadata[:rrad].parameters[defined]

  metadata[:rrad].add_request_params attributes
end
resource(name, description = '') click to toggle source

First method to be called in a spec file as it will initialize the metadatas.

# File lib/rspec/rails/api/dsl/example_group.rb, line 14
def resource(name, description = '')
  metadata[:rrad] ||= Metadata.new
  metadata[:rrad].add_resource name, description
end

Private Instance Methods

document_only(status_code) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 89
def document_only(status_code)
  example 'Create documentation' do |example|
    parent_example = example.example_group
    request_params = prepare_request_params parent_example.module_parent.description

    set_request_example parent_example.metadata[:rrad], request_params, status_code
  end
end
execute_for_code_block(status_code, doc_only, callback_block) click to toggle source
# File lib/rspec/rails/api/dsl/example_group.rb, line 98
def execute_for_code_block(status_code, doc_only, callback_block)
  if (!ENV['DOC_ONLY'] || ENV['DOC_ONLY'] == 'false' || !doc_only) && callback_block
    example 'Test and create documentation', caller: callback_block.send(:caller) do
      instance_eval(&callback_block) if callback_block
    end
  else
    document_only status_code
  end
end