Sha256: df6eaaa62a6df7acd301de889be09a93c40de21fe6e1c82619c19af8f134a9b6

Contents?: true

Size: 842 Bytes

Versions: 7

Compression:

Stored size: 842 Bytes

Contents

require 'rspec_api_docs/after/type_checker'

module RspecApiDocs
  UndocumentedParameter = Class.new(BaseError)

  class 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|
          if metadata[:parameters] && metadata[:parameters].has_key?(key.to_sym)
            After::TypeChecker.call(type: metadata[:parameters][key.to_sym][: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-0.8.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.7.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.6.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.5.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.4.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.3.0 lib/rspec_api_docs/after.rb
rspec-api-docs-0.2.0 lib/rspec_api_docs/after.rb