Sha256: 9871a4ed502f732b2e813a2c95ffb2817c4fc87628275b571ecff37a7fad7c8b

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

require_relative '../soaspec'

# This represents a request / response pair
class Exchange

  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
    @response = make_request
    @test_name
  end

  # Elements a shared 'success scenario' is expected to have
  def mandatory_elements
    @api_class.mandatory_elements
  end

  # Elements a shared 'success scenario' is expected to have
  def mandatory_xpath_values
    @api_class.mandatory_xpath_values
  end

  # Returns response object from Api
  # 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
  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(@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

2 entries across 2 versions & 1 rubygems

Version Path
soaspec-0.0.21 lib/soaspec/exchange.rb
soaspec-0.0.20 lib/soaspec/exchange.rb