Sha256: cede90383279de11270605dca82dca0fd56be1c24fb8e94674028b3c25c26e4a

Contents?: true

Size: 996 Bytes

Versions: 7

Compression:

Stored size: 996 Bytes

Contents

# TODO: Move Resource out of formatter dir
require 'rspec_api_docs/formatter/resource'
require 'rspec_api_docs/after/type_checker'

module RspecApiDocs
  UndocumentedParameter = Class.new(BaseError)

  module After
    Hook = -> (example) do
      metadata = example.metadata[METADATA_NAMESPACE]
      return unless metadata

      metadata[:requests] ||= []
      metadata[:requests] << [last_request, last_response]

      return unless RspecApiDocs.configuration.validate_params

      metadata[:requests].each do |request, response|
        request.params.each do |key, value|
          parameter = RspecApiDocs::Resource::Example.new(example).parameters
            .select { |parameter| parameter.name == key.to_sym }.first

          if parameter
            After::TypeChecker.call(type: parameter.type, value: value)
          else
            raise UndocumentedParameter, "undocumented parameter included in request #{key.inspect}"
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rspec-api-docs-1.1.0 lib/rspec_api_docs/after.rb
rspec-api-docs-1.0.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.14.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.13.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.12.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.11.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.10.0 lib/rspec_api_docs/after.rb