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

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HandlerAccessors

attribute, convert_to_lower, default_hash, element, mandatory_elements, mandatory_json_values, mandatory_xpath_values, strip_namespaces

Constructor Details

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

Set instance variable name

Raises:

  • (ArgumentError)


27
28
29
30
31
32
33
34
35
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 27

def initialize(name = self.class.to_s, _options = {})
  use
  @request_option = :hash
  raise ArgumentError, 'Cannot define both template_name and default_hash' if respond_to?(:template_name_value) && respond_to?(:default_hash_value)

  @template_name = respond_to?(:template_name_value) ? template_name_value : ''
  @default_hash = respond_to?(:default_hash_value) ? default_hash_value : {}
  @name = name
end

Instance Attribute Details

#template_nameString



17
18
19
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 17

def template_name
  @template_name
end

Class Method Details

.useExchangeHandler

Use an instance of this ExchangeHandler in any further Exchange’s This is a convenience method as it creates an ExchangeHandler behind the scenes



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

def self.use
  new.use
end

Instance Method Details

#convert_to_lower?Boolean



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

def convert_to_lower?
  false
end

#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



54
55
56
57
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 54

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



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

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



70
71
72
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 70

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



84
85
86
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 84

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



77
78
79
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 77

def expected_mandatory_xpath_values
  {}
end

#request(response) ⇒ Object

Request of API call. Either intended request or actual request



124
125
126
127
128
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 124

def request(response)
  return "Request not yet sent Request option is #{@request_option}" unless response

  'Specific API handler should implement this'
end

#set_remove_key(hash, key) ⇒ Object

Set instance variable and remove it from Hash



110
111
112
113
114
115
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 110

def set_remove_key(hash, key)
  return unless hash.key? key

  __send__("#{key}=", hash[key])
  hash.delete key
end

#set_remove_keys(hash, keys) ⇒ Object

Set instance variable for each key in hash remove it from Hash



103
104
105
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 103

def set_remove_keys(hash, keys)
  keys.each { |key| set_remove_key(hash, key) }
end

#store(name, value) ⇒ Object

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



96
97
98
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 96

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

#strip_namespaces?Boolean



118
119
120
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 118

def strip_namespaces?
  false
end

#to_sString

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



46
47
48
49
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 46

def to_s
  use
  @name.to_s
end

#useSelf

Set Api handler used by Exchange class to this handler



39
40
41
42
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 39

def use
  Soaspec.api_handler = self
  self
end