Sha256: 701fc3146eaae3474a20323ac88691914f1bd08b80a60b39a04cb097cd7c0383

Contents?: true

Size: 1.37 KB

Versions: 3

Compression:

Stored size: 1.37 KB

Contents

require_relative '../soaspec'

# This represents a request / response pair
class Exchange

  attr_reader :api_class

  def initialize(name, override_parameters = {})
    @test_name = name.to_s
    @api_class = Soaspec::Environment.api_handler
    @override_parameters = override_parameters
  end

  # Make request to handler with parameters defined
  def make_request
    @api_class.make_request(@override_parameters)
  end

  # Name describing this class when used with `RSpec.describe`
  # This will make the request and store the response
  # @return [String] Name given when initializing
  def to_s
    Soaspec::SpecLogger.add_to 'Example ' + @test_name
    @test_name
  end

  # Returns response object from Api. Will make the request if not made and then cache it for later on
  # For example for SOAP it will be a Savon response
  # response.body (body of response as Hash)
  # response.header (head of response as Hash)
  def response
    @response ||= make_request
  end

  # Get status code from api class. This is http response for Web Api
  # @return [Integer] Status code from api class
  def status_code
    @api_class.status_code_for(self.response)
  end

  # Extract value from path api class
  # @param [String] path Path to return element for api class E.g - for SOAP this is XPath
  # @return [String] Value at path
  def [](path)
    @api_class.value_from_path(self, path)
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
soaspec-0.0.30 lib/soaspec/exchange.rb
soaspec-0.0.29 lib/soaspec/exchange.rb
soaspec-0.0.28 lib/soaspec/exchange.rb