Module: Soaspec::HandlerAccessors

Included in:
ExchangeHandler
Defined in:
lib/soaspec/exchange_handlers/handler_accessors.rb

Overview

Describes methods test handlers use to easily set attributes Some are included in ‘success scenarios’ and to configure the request sent

Instance Method Summary collapse

Instance Method Details

#attribute(name, attribute = nil) ⇒ Object

Links an attribute to a meaningful method that can be accessed from Exchange class. This will use the ‘value_from_path’ method which should be implemented by each ExchangeHandler

Parameters:

  • name (String, Symbol)

    Method name used to access attribute

  • attribute (String, nil, Hash) (defaults to: nil)

    Attribute name. If not set, this will default to @name



79
80
81
82
83
84
# File 'lib/soaspec/exchange_handlers/handler_accessors.rb', line 79

def attribute(name, attribute = nil)
  attribute_used = attribute ? attribute : name.to_s
  define_method("__custom_path_#{name}") do |response|
    value_from_path(response, 'implicit', attribute: attribute_used)
  end
end

#element(name, path) ⇒ Object

Links a particular path to a meaningful method that can be accessed from Exchange class. This will use the ‘value_from_path’ method which should be implemented by each ExchangeHandler

Parameters:

  • name (String, Symbol)

    Method name used to access element

  • path (String, Symbol)

    Path to find object (e.g, XPath, JSONPath)



68
69
70
71
72
# File 'lib/soaspec/exchange_handlers/handler_accessors.rb', line 68

def element(name, path)
  define_method("__custom_path_#{name}") do |response|
    value_from_path(response, path.to_s)
  end
end

#mandatory_elements(elements) ⇒ Object

Defines expected_mandatory_elements method used in ‘success_scenario’ shared examples to indicate certain elements must be present Or for a list

In test describe Exchange(:name) do

it_behaves_like 'success scenario' # Includes checks for mandatory elements

end

Examples:

Inside class

mandatory_elements :GetWeatherResult

Inside class

mandatory_elements [:GetWeatherResult, :GetResultStatus]

Parameters:

  • elements (Array)

    Array of symbols specifying expected element names for ‘success scenario’ in snakecase



22
23
24
25
26
27
# File 'lib/soaspec/exchange_handlers/handler_accessors.rb', line 22

def mandatory_elements(elements)
  define_method('expected_mandatory_elements') do
    return [elements] if elements.is_a?(String) || elements.is_a?(Symbol)
    elements
  end
end

#mandatory_json_values(json_value_pairs) ⇒ Object

Defines mandatory json path value pairs to be included in ‘success scenario’ shared example

In test describe Exchange(:name) do

it_behaves_like 'success scenario' # Includes json pair validation

end

Examples:

Inside class

mandatory_json_values '$..GetWeatherResult' => 'Found'


56
57
58
59
60
61
# File 'lib/soaspec/exchange_handlers/handler_accessors.rb', line 56

def mandatory_json_values(json_value_pairs)
  raise ArgumentError("Hash of {'jsonpath' => expected values} expected") unless json_value_pairs.is_a? Hash
  define_method('expected_mandatory_json_values') do
    json_value_pairs
  end
end

#mandatory_xpath_values(xpath_value_pairs) ⇒ Object

Defines mandatory xpaths value pairs to be included in ‘success scenario’ shared example

In test describe Exchange(:name) do

it_behaves_like 'success scenario' # Includes xpath pair validation

end

Examples:

Inside class

mandatory_xpath_values '//xmlns:GetWeatherResult' => 'Data Not Found'


39
40
41
42
43
44
# File 'lib/soaspec/exchange_handlers/handler_accessors.rb', line 39

def mandatory_xpath_values(xpath_value_pairs)
  raise ArgumentError('Hash of {xpath => expected values} expected ') unless xpath_value_pairs.is_a? Hash
  define_method('expected_mandatory_xpath_values') do
    xpath_value_pairs
  end
end