Sha256: b57ae6fe2700c3d5c9536e780fdeffa0b08593b4a9b8e6bad6c01ff212711697

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

require 'api-tester/definition/boundary_case'

module ApiTester
  class Request
    attr_accessor :definition
    attr_accessor :header_fields
    attr_accessor :fields

    def initialize
      self.fields = []
      self.header_fields = []
    end

    def add_field(new_field)
      self.fields << new_field
      self
    end

    def add_header_field new_header
      self.header_fields << new_header
      self
    end

    def payload
      response = Hash.new
      self.fields.each do |field|
        response[field.name] = field.default_value
      end
      response
    end

    def default_payload
      payload
    end

    def default_headers
      if self.header_fields != []
        self.headers
      else
        {content_type: :json, accept: :json}
      end
    end

    def headers
      header_response = {}
      self.header_fields.each do |header|
        header_response[header.name] = header.default_value
      end
      header_response
    end

    def cases
      boundary_cases = Array.new
      self.fields.each do |field|
        field.negative_boundary_values.each do |value|
          bcase = BoundaryCase.new("Setting #{field.name} to #{value}", altered_payload(field.name, value), default_headers)
          boundary_cases.push(bcase)
        end
      end
      boundary_cases
    end

    def altered_payload field_name, value
      body = payload
      body[field_name] = value
      body
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
api-tester-1.0.0 lib/api-tester/definition/request.rb