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