lib/soaspec/exchange_handlers/exchange_handler.rb in soaspec-0.1.5 vs lib/soaspec/exchange_handlers/exchange_handler.rb in soaspec-0.1.6
- old
+ new
@@ -1,104 +1,104 @@
-
-require_relative 'handler_accessors'
-
-module Soaspec
-
- # Inherit this for a class describing how to implement a particular exchange.
- # Has basic methods common for methods defining RSpec tests in YAML
- class ExchangeHandler
- extend Soaspec::HandlerAccessors
-
- # Retrieve the name of the template file to be used in the API request
- attr_reader :template_name
-
- # Explicitly defined elements for which a path has been predefined
- def elements
- public_methods.select { |i| i[/__custom_path_.+/] }
- end
-
- # Set the default hash representing data to be used in making a request
- # This will set the @request_option instance variable too
- def default_hash=(hash)
- @request_option = :hash
- @default_hash = Soaspec.always_use_keys? ? hash.transform_keys_to_symbols : hash
- end
-
- # Set instance variable name
- # @param [String, Symbol] name Name used when describing API test
- # @param [Hash] options Parameters defining handler. Used in descendants
- def initialize(name = self.class.to_s, options = {})
- use
- @name = name
- end
-
- # Set Api handler used by Exchange class to this handler
- # @return [Self]
- def use
- Soaspec.api_handler = self
- self
- end
-
- # Sets api handler variable globally. This is used in 'Exchange' class
- # @return [String] Name set upon initialisation
- def to_s
- use
- @name.to_s
- end
-
- # Set the request option type and the template name
- # Erb is used to parse the template file, executing Ruby code in `<%= %>` blocks to work out the final request
- # @param [String] name Name of file inside 'template' folder excluding extension
- def template_name=(name)
- @request_option = :template
- @template_name = name
- end
-
- # Will be used in 'success_scenarios' shared examples.
- # Set though 'mandatory_elements' method
- # @return [Array] Array of symbols specifying element names
- def expected_mandatory_elements
- []
- end
-
- # 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
- # @return [Hash] Hash of 'xpath' => 'expected value' pairs
- def expected_mandatory_xpath_values
- {}
- end
-
- # 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
- # @return [Hash] Hash of 'json/path' => 'expected value' pairs
- def expected_mandatory_json_values
- {}
- end
-
- # @return [Boolean] Whether all xpaths will be done with XML that is converted to lower case
- def convert_to_lower?
- false
- end
-
- # Stores a value in a method that can be accessed by the provided name
- # @param [Symbol] name Name of method to use to access this value within handler
- # @param [String] value Value to store
- def store(name, value)
- define_singleton_method('__stored_val__' + name.to_s) do
- value
- end
- end
-
- # Set instance variable and remove it from Hash
- def set_remove_key(hash, key)
- return unless hash.key? key
- __send__("#{key}=", hash[key])
- hash.delete key
- end
-
- # @return [Boolean] Whether to remove namespaces in xpath assertion automatically
- def strip_namespaces?
- false
- end
-
- end
+
+require_relative 'handler_accessors'
+
+module Soaspec
+
+ # Inherit this for a class describing how to implement a particular exchange.
+ # Has basic methods common for methods defining RSpec tests in YAML
+ class ExchangeHandler
+ extend Soaspec::HandlerAccessors
+
+ # Retrieve the name of the template file to be used in the API request
+ attr_reader :template_name
+
+ # Explicitly defined elements for which a path has been predefined
+ def elements
+ public_methods.select { |i| i[/__custom_path_.+/] }
+ end
+
+ # Set the default hash representing data to be used in making a request
+ # This will set the @request_option instance variable too
+ def default_hash=(hash)
+ @request_option = :hash
+ @default_hash = Soaspec.always_use_keys? ? hash.transform_keys_to_symbols : hash
+ end
+
+ # Set instance variable name
+ # @param [String, Symbol] name Name used when describing API test
+ # @param [Hash] options Parameters defining handler. Used in descendants
+ def initialize(name = self.class.to_s, options = {})
+ use
+ @name = name
+ end
+
+ # Set Api handler used by Exchange class to this handler
+ # @return [Self]
+ def use
+ Soaspec.api_handler = self
+ self
+ end
+
+ # Sets api handler variable globally. This is used in 'Exchange' class
+ # @return [String] Name set upon initialisation
+ def to_s
+ use
+ @name.to_s
+ end
+
+ # Set the request option type and the template name
+ # Erb is used to parse the template file, executing Ruby code in `<%= %>` blocks to work out the final request
+ # @param [String] name Name of file inside 'template' folder excluding extension
+ def template_name=(name)
+ @request_option = :template
+ @template_name = name
+ end
+
+ # Will be used in 'success_scenarios' shared examples.
+ # Set though 'mandatory_elements' method
+ # @return [Array] Array of symbols specifying element names
+ def expected_mandatory_elements
+ []
+ end
+
+ # 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
+ # @return [Hash] Hash of 'xpath' => 'expected value' pairs
+ def expected_mandatory_xpath_values
+ {}
+ end
+
+ # 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
+ # @return [Hash] Hash of 'json/path' => 'expected value' pairs
+ def expected_mandatory_json_values
+ {}
+ end
+
+ # @return [Boolean] Whether all xpaths will be done with XML that is converted to lower case
+ def convert_to_lower?
+ false
+ end
+
+ # Stores a value in a method that can be accessed by the provided name
+ # @param [Symbol] name Name of method to use to access this value within handler
+ # @param [String] value Value to store
+ def store(name, value)
+ define_singleton_method('__stored_val__' + name.to_s) do
+ value
+ end
+ end
+
+ # Set instance variable and remove it from Hash
+ def set_remove_key(hash, key)
+ return unless hash.key? key
+ __send__("#{key}=", hash[key])
+ hash.delete key
+ end
+
+ # @return [Boolean] Whether to remove namespaces in xpath assertion automatically
+ def strip_namespaces?
+ false
+ end
+
+ end
end
\ No newline at end of file