Class: Soaspec::ExchangeHandler

Inherits:
Object
  • Object
show all
Extended by:
HandlerAccessors
Defined in:
lib/soaspec/exchange_handlers/exchange_handler.rb

Overview

Inherit this for a class describing how to implement a particular exchange. Has basic methods common for methods defining RSpec tests in YAML

Direct Known Subclasses

RestHandler, SoapHandler

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HandlerAccessors

attribute, element, mandatory_elements, mandatory_json_values, mandatory_xpath_values

Constructor Details

#initialize(name = self.class.to_s, options = {}) ⇒ ExchangeHandler

Set instance variable name

Parameters:

  • name (String, Symbol) (defaults to: self.class.to_s)

    Name used when describing API test

  • options (Hash) (defaults to: {})

    Parameters defining handler. Used in descendants



29
30
31
32
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 29

def initialize(name = self.class.to_s, options = {})
  use
  @name = name
end

Instance Attribute Details

#template_nameObject

Retrieve the name of the template file to be used in the API request



12
13
14
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 12

def template_name
  @template_name
end

Instance Method Details

#default_hash=(hash) ⇒ Object

Set the default hash representing data to be used in making a request This will set the @request_option instance variable too



21
22
23
24
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 21

def default_hash=(hash)
  @request_option = :hash
  @default_hash = Soaspec.always_use_keys? ? hash.transform_keys_to_symbols : hash
end

#elementsObject

Explicitly defined elements for which a path has been predefined



15
16
17
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 15

def elements
  public_methods.select { |i| i[/__custom_path_.+/] }
end

#expected_mandatory_elementsArray

Will be used in ‘success_scenarios’ shared examples. Set though ‘mandatory_elements’ method

Returns:

  • (Array)

    Array of symbols specifying element names



59
60
61
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 59

def expected_mandatory_elements
  []
end

#expected_mandatory_json_valuesHash

Change this through ‘mandatory_json_values’ method to specify json results that must be present in the response Will be used in ‘success_scenarios’ shared examples

Returns:

  • (Hash)

    Hash of ‘json/path’ => ‘expected value’ pairs



73
74
75
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 73

def expected_mandatory_json_values
  {}
end

#expected_mandatory_xpath_valuesHash

Change this through ‘mandatory_xpath_values’ method to specify xpath results that must be present in the response Will be used in ‘success_scenarios’ shared examples

Returns:

  • (Hash)

    Hash of ‘xpath’ => ‘expected value’ pairs



66
67
68
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 66

def expected_mandatory_xpath_values
  {}
end

#set_remove_key(hash, key) ⇒ Object

Set instance variable and remove it from Hash



87
88
89
90
91
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 87

def set_remove_key(hash, key)
  return unless hash.key? key
  __send__("#{key}=", hash[key])
  hash.delete key
end

#store(name, value) ⇒ Object

Stores a value in a method that can be accessed by the provided name

Parameters:

  • name (Symbol)

    Name of method to use to access this value within handler

  • value (String)

    Value to store



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

def store(name, value)
  define_singleton_method('__stored_val__' + name.to_s) do
    value
  end
end

#to_sString

Sets api handler variable globally. This is used in ‘Exchange’ class

Returns:

  • (String)

    Name set upon initialisation



43
44
45
46
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 43

def to_s
  use
  @name.to_s
end

#useSelf

Set Api handler used by Exchange class to this handler

Returns:

  • (Self)


36
37
38
39
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 36

def use
  Soaspec.api_handler = self
  self
end