Class: Soaspec::ExchangeHandler
- Inherits:
-
Object
- Object
- Soaspec::ExchangeHandler
- 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
Instance Attribute Summary collapse
-
#template_name ⇒ Object
Retrieve the name of the template file to be used in the API request.
Instance Method Summary collapse
-
#convert_to_lower? ⇒ Boolean
Whether all xpaths will be done with XML that is converted to lower case.
-
#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.
-
#elements ⇒ Object
Explicitly defined elements for which a path has been predefined.
-
#expected_mandatory_elements ⇒ Array
Will be used in ‘success_scenarios’ shared examples.
-
#expected_mandatory_json_values ⇒ Hash
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.
-
#expected_mandatory_xpath_values ⇒ Hash
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.
-
#initialize(name = self.class.to_s, options = {}) ⇒ ExchangeHandler
constructor
Set instance variable name.
-
#request(response) ⇒ Object
Request of API call.
-
#set_remove_key(hash, key) ⇒ Object
Set instance variable and remove it from Hash.
-
#set_remove_keys(hash, keys) ⇒ Object
Set instance variable for each key in hash remove it from Hash.
-
#store(name, value) ⇒ Object
Stores a value in a method that can be accessed by the provided name.
-
#strip_namespaces? ⇒ Boolean
Whether to remove namespaces in xpath assertion automatically.
-
#to_s ⇒ String
Sets api handler variable globally.
-
#use ⇒ Self
Set Api handler used by Exchange class to this handler.
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
22 23 24 25 26 27 28 29 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 22 def initialize(name = self.class.to_s, = {}) 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_name ⇒ Object
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
#convert_to_lower? ⇒ Boolean
Returns Whether all xpaths will be done with XML that is converted to lower case.
82 83 84 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 82 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
47 48 49 50 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 47 def default_hash=(hash) @request_option = :hash @default_hash = Soaspec.always_use_keys? ? hash.transform_keys_to_symbols : hash end |
#elements ⇒ Object
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_elements ⇒ Array
Will be used in ‘success_scenarios’ shared examples. Set though ‘mandatory_elements’ method
63 64 65 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 63 def expected_mandatory_elements [] end |
#expected_mandatory_json_values ⇒ Hash
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
77 78 79 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 77 def expected_mandatory_json_values {} end |
#expected_mandatory_xpath_values ⇒ Hash
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
70 71 72 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 70 def expected_mandatory_xpath_values {} end |
#request(response) ⇒ Object
Request of API call. Either intended request or actual request
115 116 117 118 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 115 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
103 104 105 106 107 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 103 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
98 99 100 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 98 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
89 90 91 92 93 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 89 def store(name, value) define_singleton_method('__stored_val__' + name.to_s) do value end end |
#strip_namespaces? ⇒ Boolean
Returns Whether to remove namespaces in xpath assertion automatically.
110 111 112 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 110 def strip_namespaces? false end |
#to_s ⇒ String
Sets api handler variable globally. This is used in ‘Exchange’ class
40 41 42 43 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 40 def to_s use @name.to_s end |
#use ⇒ Self
Set Api handler used by Exchange class to this handler
33 34 35 36 |
# File 'lib/soaspec/exchange_handlers/exchange_handler.rb', line 33 def use Soaspec.api_handler = self self end |