automation_object 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/lib/automation_object.rb +22 -11
  3. data/lib/automation_object/blue_print.rb +13 -12
  4. data/lib/automation_object/blue_print/composite/automatic_onload_modal.rb +9 -8
  5. data/lib/automation_object/blue_print/composite/base.rb +5 -4
  6. data/lib/automation_object/blue_print/composite/custom_method.rb +8 -7
  7. data/lib/automation_object/blue_print/composite/element.rb +6 -5
  8. data/lib/automation_object/blue_print/composite/element_array.rb +6 -5
  9. data/lib/automation_object/blue_print/composite/element_hash.rb +7 -6
  10. data/lib/automation_object/blue_print/composite/helpers/element_helper.rb +7 -7
  11. data/lib/automation_object/blue_print/composite/helpers/multiple_elements_helper.rb +5 -4
  12. data/lib/automation_object/blue_print/composite/hook.rb +9 -11
  13. data/lib/automation_object/blue_print/composite/hook_action.rb +25 -24
  14. data/lib/automation_object/blue_print/composite/hook_element_requirements.rb +14 -13
  15. data/lib/automation_object/blue_print/composite/modal.rb +11 -21
  16. data/lib/automation_object/blue_print/composite/screen.rb +22 -16
  17. data/lib/automation_object/blue_print/composite/top.rb +13 -12
  18. data/lib/automation_object/blue_print/composite/view.rb +27 -16
  19. data/lib/automation_object/blue_print/hash_adapter.rb +15 -11
  20. data/lib/automation_object/blue_print/hash_adapter/automatic_onload_modal.rb +12 -11
  21. data/lib/automation_object/blue_print/hash_adapter/composite.rb +28 -25
  22. data/lib/automation_object/blue_print/hash_adapter/custom_method.rb +11 -10
  23. data/lib/automation_object/blue_print/hash_adapter/element.rb +10 -9
  24. data/lib/automation_object/blue_print/hash_adapter/element_array.rb +10 -9
  25. data/lib/automation_object/blue_print/hash_adapter/element_hash.rb +11 -10
  26. data/lib/automation_object/blue_print/hash_adapter/helpers/element_helper.rb +20 -25
  27. data/lib/automation_object/blue_print/hash_adapter/helpers/multiple_elements_helper.rb +15 -14
  28. data/lib/automation_object/blue_print/hash_adapter/helpers/validation_error.rb +9 -8
  29. data/lib/automation_object/blue_print/hash_adapter/helpers/validation_helper.rb +19 -24
  30. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate.rb +8 -5
  31. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_allowed_keys.rb +7 -8
  32. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_element_presence_of.rb +28 -23
  33. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_instance_of.rb +12 -13
  34. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_modal_presence_of.rb +27 -23
  35. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_presence_of.rb +9 -8
  36. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_screen_presence_of.rb +27 -23
  37. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_view_presence_of.rb +25 -21
  38. data/lib/automation_object/blue_print/hash_adapter/hook.rb +14 -11
  39. data/lib/automation_object/blue_print/hash_adapter/hook_action.rb +45 -47
  40. data/lib/automation_object/blue_print/hash_adapter/hook_element_requirements.rb +24 -28
  41. data/lib/automation_object/blue_print/hash_adapter/modal.rb +14 -13
  42. data/lib/automation_object/blue_print/hash_adapter/screen.rb +23 -22
  43. data/lib/automation_object/blue_print/hash_adapter/top.rb +16 -15
  44. data/lib/automation_object/blue_print/hash_adapter/view.rb +58 -4
  45. data/lib/automation_object/blue_print/yaml_adapter.rb +33 -34
  46. data/lib/automation_object/driver.rb +15 -13
  47. data/lib/automation_object/driver/appium_adapter/driver.rb +47 -46
  48. data/lib/automation_object/driver/appium_adapter/element.rb +29 -96
  49. data/lib/automation_object/driver/base.rb +4 -2
  50. data/lib/automation_object/driver/common_selenium/driver.rb +60 -0
  51. data/lib/automation_object/driver/common_selenium/element.rb +107 -0
  52. data/lib/automation_object/driver/common_selenium/element_geometry.rb +86 -0
  53. data/lib/automation_object/driver/driver.rb +60 -30
  54. data/lib/automation_object/driver/element.rb +70 -15
  55. data/lib/automation_object/driver/nokogiri_adapter/driver.rb +88 -34
  56. data/lib/automation_object/driver/nokogiri_adapter/element.rb +94 -16
  57. data/lib/automation_object/driver/nokogiri_adapter/error.rb +29 -8
  58. data/lib/automation_object/driver/nokogiri_adapter/{backup/form.rb → form.rb} +19 -6
  59. data/lib/automation_object/driver/nokogiri_adapter/request.rb +17 -0
  60. data/lib/automation_object/driver/nokogiri_adapter/session.rb +94 -0
  61. data/lib/automation_object/driver/nokogiri_adapter/window.rb +86 -0
  62. data/lib/automation_object/driver/selenium_adapter/driver.rb +36 -45
  63. data/lib/automation_object/driver/selenium_adapter/element.rb +15 -85
  64. data/lib/automation_object/dsl.rb +11 -28
  65. data/lib/automation_object/dsl/_base.rb +70 -0
  66. data/lib/automation_object/dsl/_proxy.rb +24 -0
  67. data/lib/automation_object/dsl/element.rb +34 -0
  68. data/lib/automation_object/dsl/element_array.rb +34 -0
  69. data/lib/automation_object/dsl/element_hash.rb +34 -0
  70. data/lib/automation_object/dsl/modal.rb +43 -0
  71. data/lib/automation_object/dsl/screen.rb +45 -0
  72. data/lib/automation_object/dsl/top.rb +25 -0
  73. data/lib/automation_object/framework.rb +28 -38
  74. data/lib/automation_object/helpers/composite.rb +30 -27
  75. data/lib/automation_object/helpers/composite_hook.rb +16 -15
  76. data/lib/automation_object/{blue_print/helpers/file_helper.rb → helpers/file.rb} +12 -12
  77. data/lib/automation_object/helpers/hash.rb +6 -5
  78. data/lib/automation_object/helpers/kernel.rb +11 -0
  79. data/lib/automation_object/helpers/{reflection_helper.rb → reflection.rb} +9 -8
  80. data/lib/automation_object/helpers/string.rb +25 -15
  81. data/lib/automation_object/{proxies → proxy}/mutex_proxy.rb +18 -21
  82. data/lib/automation_object/proxy/proxy.rb +23 -0
  83. data/lib/automation_object/proxy/throttle_proxy.rb +52 -0
  84. data/lib/automation_object/state.rb +11 -29
  85. data/lib/automation_object/state/{blue_print_adapter/composite.rb → composite/_base.rb} +35 -25
  86. data/lib/automation_object/state/{blue_print_adapter/helpers/element_helper.rb → composite/_common_element.rb} +11 -11
  87. data/lib/automation_object/state/composite/element.rb +22 -0
  88. data/lib/automation_object/state/composite/element_array.rb +27 -0
  89. data/lib/automation_object/state/composite/element_hash.rb +33 -0
  90. data/lib/automation_object/state/composite/element_proxy.rb +33 -0
  91. data/lib/automation_object/state/composite/helpers/window.rb +61 -0
  92. data/lib/automation_object/state/composite/helpers/window_manager.rb +60 -0
  93. data/lib/automation_object/state/composite/hook.rb +56 -0
  94. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_action.rb +10 -8
  95. data/lib/automation_object/state/composite/hook_actions/action_loop.rb +36 -0
  96. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/change_screen.rb +7 -5
  97. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/change_to_previous_screen.rb +7 -5
  98. data/lib/automation_object/state/composite/hook_actions/close_modal.rb +29 -0
  99. data/lib/automation_object/state/composite/hook_actions/close_screen.rb +19 -0
  100. data/lib/automation_object/state/composite/hook_actions/element_requirement.rb +32 -0
  101. data/lib/automation_object/state/composite/hook_actions/new_screen.rb +35 -0
  102. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/possible_screen_changes.rb +8 -7
  103. data/lib/automation_object/state/composite/hook_actions/reset_screen.rb +14 -0
  104. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/show_modal.rb +7 -5
  105. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/sleep.rb +4 -2
  106. data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/wait_for_elements.rb +7 -5
  107. data/lib/automation_object/state/composite/modal.rb +45 -0
  108. data/lib/automation_object/state/composite/screen.rb +58 -0
  109. data/lib/automation_object/state/composite/top.rb +51 -0
  110. data/lib/automation_object/state/error.rb +45 -6
  111. data/lib/automation_object/state/session.rb +25 -23
  112. data/lib/automation_object/step_definitions.rb +5 -3
  113. data/lib/automation_object/step_definitions/element.rb +77 -0
  114. data/lib/automation_object/step_definitions/element_array.rb +135 -0
  115. data/lib/automation_object/step_definitions/element_hash.rb +126 -0
  116. data/lib/automation_object/step_definitions/screen.rb +62 -0
  117. data/lib/automation_object/step_definitions/{cache.rb → support/cache.rb} +8 -6
  118. data/lib/automation_object/step_definitions/support/element_array.rb +40 -0
  119. data/lib/automation_object/step_definitions/support/element_hash.rb +41 -0
  120. data/lib/automation_object/step_definitions/{parse.rb → support/parse.rb} +8 -6
  121. data/lib/automation_object/version.rb +2 -1
  122. metadata +203 -103
  123. data/lib/automation_object/driver/helpers/selenium_driver_helper.rb +0 -41
  124. data/lib/automation_object/driver/helpers/selenium_element_helper.rb +0 -138
  125. data/lib/automation_object/driver/nokogiri_adapter/backup/driver.rb +0 -83
  126. data/lib/automation_object/driver/nokogiri_adapter/backup/element.rb +0 -66
  127. data/lib/automation_object/driver/nokogiri_adapter/backup/helpers/driver_element_helper.rb +0 -52
  128. data/lib/automation_object/driver/nokogiri_adapter/backup/session.rb +0 -115
  129. data/lib/automation_object/dsl/blue_print_adapter.rb +0 -16
  130. data/lib/automation_object/dsl/blue_print_adapter/composite.rb +0 -54
  131. data/lib/automation_object/dsl/blue_print_adapter/element.rb +0 -14
  132. data/lib/automation_object/dsl/blue_print_adapter/element_array.rb +0 -14
  133. data/lib/automation_object/dsl/blue_print_adapter/element_hash.rb +0 -14
  134. data/lib/automation_object/dsl/blue_print_adapter/modal.rb +0 -23
  135. data/lib/automation_object/dsl/blue_print_adapter/screen.rb +0 -26
  136. data/lib/automation_object/dsl/blue_print_adapter/top.rb +0 -19
  137. data/lib/automation_object/dsl/models.rb +0 -18
  138. data/lib/automation_object/dsl/proxies/element.rb +0 -16
  139. data/lib/automation_object/dsl/proxies/element_array.rb +0 -16
  140. data/lib/automation_object/dsl/proxies/element_hash.rb +0 -16
  141. data/lib/automation_object/dsl/proxies/helpers/composite_helper.rb +0 -74
  142. data/lib/automation_object/dsl/proxies/modal.rb +0 -17
  143. data/lib/automation_object/dsl/proxies/screen.rb +0 -17
  144. data/lib/automation_object/dsl/proxies/top.rb +0 -17
  145. data/lib/automation_object/proxies/proxy.rb +0 -20
  146. data/lib/automation_object/proxies/throttle_proxy.rb +0 -57
  147. data/lib/automation_object/state/blue_print_adapter.rb +0 -16
  148. data/lib/automation_object/state/blue_print_adapter/element.rb +0 -20
  149. data/lib/automation_object/state/blue_print_adapter/element_array.rb +0 -25
  150. data/lib/automation_object/state/blue_print_adapter/element_hash.rb +0 -31
  151. data/lib/automation_object/state/blue_print_adapter/element_proxy.rb +0 -28
  152. data/lib/automation_object/state/blue_print_adapter/helpers/screen_manager.rb +0 -137
  153. data/lib/automation_object/state/blue_print_adapter/helpers/window.rb +0 -39
  154. data/lib/automation_object/state/blue_print_adapter/hook.rb +0 -56
  155. data/lib/automation_object/state/blue_print_adapter/hook_actions/action_loop.rb +0 -35
  156. data/lib/automation_object/state/blue_print_adapter/hook_actions/close_modal.rb +0 -31
  157. data/lib/automation_object/state/blue_print_adapter/hook_actions/close_screen.rb +0 -19
  158. data/lib/automation_object/state/blue_print_adapter/hook_actions/element_requirement.rb +0 -34
  159. data/lib/automation_object/state/blue_print_adapter/hook_actions/new_screen.rb +0 -37
  160. data/lib/automation_object/state/blue_print_adapter/hook_actions/reset_screen.rb +0 -18
  161. data/lib/automation_object/state/blue_print_adapter/modal.rb +0 -26
  162. data/lib/automation_object/state/blue_print_adapter/screen.rb +0 -32
  163. data/lib/automation_object/state/blue_print_adapter/top.rb +0 -45
  164. data/lib/automation_object/step_definitions/action.rb +0 -21
  165. data/lib/automation_object/step_definitions/element/actions.rb +0 -87
  166. data/lib/automation_object/step_definitions/element/regex.rb +0 -24
  167. data/lib/automation_object/step_definitions/element/steps.rb +0 -67
@@ -1,30 +1,31 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'composite'
3
4
 
4
5
  module AutomationObject
5
6
  module BluePrint
6
7
  module HashAdapter
7
- #Custom method composite
8
+ # Custom method composite
8
9
  class CustomMethod < Composite
9
- #Validations
10
+ # Validations
10
11
  validates :element_method, instance_of: [String, Symbol], presence_of: true
11
12
  validates :evaluate, instance_of: [String], presence_of: true
12
13
 
13
14
  def element_method
14
- element_method = self.hash[:element_method]
15
+ element_method = hash[:element_method]
15
16
 
16
17
  case element_method
17
- when Symbol, String
18
- return element_method.to_sym
19
- else
20
- return nil
18
+ when Symbol, String
19
+ return element_method.to_sym
20
+ else
21
+ return nil
21
22
  end
22
23
  end
23
24
 
24
25
  def evaluate
25
- return self.hash[:evaluate] ||= nil
26
+ hash[:evaluate] ||= nil
26
27
  end
27
28
  end
28
29
  end
29
30
  end
30
- end
31
+ end
@@ -1,34 +1,35 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'composite'
3
4
 
4
- #Require child classes
5
+ # Require child classes
5
6
  require_relative 'hook'
6
7
  require_relative 'custom_method'
7
8
 
8
- #Require helpers
9
+ # Require helpers
9
10
  require_relative 'helpers/element_helper'
10
11
 
11
12
  module AutomationObject
12
13
  module BluePrint
13
14
  module HashAdapter
14
- #Element composite
15
+ # Element composite
15
16
  class Element < Composite
16
17
  include ElementHelper
17
18
 
18
19
  before_create :method_hooks
19
20
 
20
- #Relationships
21
+ # Relationships
21
22
  has_one :load, interface: Hook
22
23
  has_many :custom_methods, interface: CustomMethod
23
24
 
24
- #Validations
25
+ # Validations
25
26
  validates :load, instance_of: Hash
26
27
  validates :custom_methods, instance_of: Hash
27
28
 
28
29
  validates :in_iframe, instance_of: String, element_presence_of: true
29
- validates :css, instance_of: String, presence_of: {:unless_presence_of => :xpath}
30
- validates :xpath, instance_of: String, presence_of: {:unless_presence_of => :css}
30
+ validates :css, instance_of: String, presence_of: { unless_presence_of: :xpath }
31
+ validates :xpath, instance_of: String, presence_of: { unless_presence_of: :css }
31
32
  end
32
33
  end
33
34
  end
34
- end
35
+ end
@@ -1,36 +1,37 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'composite'
3
4
 
4
- #Require child classes
5
+ # Require child classes
5
6
  require_relative 'hook'
6
7
  require_relative 'custom_method'
7
8
 
8
- #Require helpers
9
+ # Require helpers
9
10
  require_relative 'helpers/element_helper'
10
11
  require_relative 'helpers/multiple_elements_helper'
11
12
 
12
13
  module AutomationObject
13
14
  module BluePrint
14
15
  module HashAdapter
15
- #Element array composite
16
+ # Element array composite
16
17
  class ElementArray < Composite
17
18
  include ElementHelper
18
19
  include MultipleElementsHelper
19
20
 
20
21
  before_create :method_hooks
21
22
 
22
- #Relationships
23
+ # Relationships
23
24
  has_one :load, interface: Hook
24
25
  has_many :custom_methods, interface: CustomMethod
25
26
 
26
- #Validations
27
+ # Validations
27
28
  validates :load, instance_of: Hash
28
29
  validates :custom_range, instance_of: [Hash, String]
29
30
  validates :in_iframe, instance_of: String, element_presence_of: true
30
31
  validates :custom_methods, instance_of: Hash
31
- validates :css, instance_of: String, presence_of: {:unless_presence_of => :xpath}
32
- validates :xpath, instance_of: String, presence_of: {:unless_presence_of => :css}
32
+ validates :css, instance_of: String, presence_of: { unless_presence_of: :xpath }
33
+ validates :xpath, instance_of: String, presence_of: { unless_presence_of: :css }
33
34
  end
34
35
  end
35
36
  end
36
- end
37
+ end
@@ -1,43 +1,44 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'composite'
3
4
 
4
- #Require child classes
5
+ # Require child classes
5
6
  require_relative 'hook'
6
7
  require_relative 'custom_method'
7
8
 
8
- #Require helpers
9
+ # Require helpers
9
10
  require_relative 'helpers/element_helper'
10
11
  require_relative 'helpers/multiple_elements_helper'
11
12
 
12
13
  module AutomationObject
13
14
  module BluePrint
14
15
  module HashAdapter
15
- #Element hash composite
16
+ # Element hash composite
16
17
  class ElementHash < Composite
17
18
  include ElementHelper
18
19
  include MultipleElementsHelper
19
20
 
20
21
  before_create :method_hooks
21
22
 
22
- #Relationships
23
+ # Relationships
23
24
  has_one :load, interface: Hook
24
25
  has_many :custom_methods, interface: CustomMethod
25
26
 
26
- #Validations
27
+ # Validations
27
28
  validates :load, instance_of: Hash
28
29
 
29
30
  validates :define_elements_by, instance_of: [String, Symbol], presence_of: true
30
31
  validates :custom_range, instance_of: [Hash, String]
31
32
  validates :in_iframe, instance_of: String, element_presence_of: true
32
33
  validates :custom_methods, instance_of: Hash
33
- validates :css, instance_of: String, presence_of: {:unless_presence_of => :xpath}
34
- validates :xpath, instance_of: String, presence_of: {:unless_presence_of => :css}
34
+ validates :css, instance_of: String, presence_of: { unless_presence_of: :xpath }
35
+ validates :xpath, instance_of: String, presence_of: { unless_presence_of: :css }
35
36
 
36
37
  # @return [Symbol] element method to define element keys by
37
38
  def define_elements_by
38
- return self.hash[:define_elements_by].to_sym
39
+ hash[:define_elements_by].to_sym
39
40
  end
40
41
  end
41
42
  end
42
43
  end
43
- end
44
+ end
@@ -1,59 +1,54 @@
1
+ # frozen_string_literal: true
1
2
  module AutomationObject
2
3
  module BluePrint
3
4
  module HashAdapter
4
- #Helper module for Element composite classes
5
+ # Helper module for Element composite classes
5
6
  module ElementHelper
6
7
  # @return [Array<Symbol, String>, nil] params as an array for driver find_element args
7
8
  def selector_params
8
- case
9
- when self.hash[:xpath].is_a?(String)
10
- [:xpath, self.hash[:xpath]]
11
- when self.hash[:css].is_a?(String)
12
- [:css, self.hash[:css]]
13
- else
14
- nil
9
+ if hash[:xpath].is_a?(String)
10
+ [:xpath, hash[:xpath]]
11
+ elsif hash[:css].is_a?(String)
12
+ [:css, hash[:css]]
15
13
  end
16
14
  end
17
15
 
18
16
  # @return [Symbol, nil] element name of iframe element is in or nil if not
19
17
  def in_iframe
20
- case self.hash[:in_iframe]
21
- when Symbol, String
22
- self.hash[:in_iframe].to_sym
23
- else
24
- nil
18
+ case hash[:in_iframe]
19
+ when Symbol, String
20
+ hash[:in_iframe].to_sym
25
21
  end
26
22
  end
27
23
 
28
24
  # @return [Boolean] whether or not element is in iframe
29
25
  def in_iframe?
30
- (self.in_iframe) ? true : false
26
+ in_iframe ? true : false
31
27
  end
32
28
 
33
29
  def method_hook?(name)
34
- return self.method_hooks.has_key?(name)
30
+ method_hooks.key?(name)
35
31
  end
36
32
 
37
33
  # @return [Hash<Hook>] array of Hook that are defined under the element
38
34
  def method_hooks
39
- return @method_hooks if @method_hooks
35
+ return @method_hooks if defined? @method_hooks
40
36
 
41
37
  children = {}
42
- self.hash.each { |key, value|
43
- #Skip possible keys that elements can have
44
- #Otherwise should be a method hook
38
+ hash.each do |key, value|
39
+ # Skip possible keys that elements can have
40
+ # Otherwise should be a method hook
45
41
  next if [:load, :custom_methods, :in_iframe, :css, :xpath, :define_elements_by, :custom_range].include?(key)
46
42
  children[key] = value
47
- }
43
+ end
48
44
 
49
- @method_hooks = self.create_hash_children(children,
50
- {interface: Hook,
51
- location: self.location + '[hook]'})
45
+ @method_hooks = create_hash_children(children,
46
+ interface: Hook,
47
+ location: location + '[hook]')
52
48
 
53
- return @method_hooks
49
+ @method_hooks
54
50
  end
55
51
  end
56
52
  end
57
53
  end
58
54
  end
59
-
@@ -1,35 +1,36 @@
1
+ # frozen_string_literal: true
1
2
  module AutomationObject
2
3
  module BluePrint
3
4
  module HashAdapter
4
- #Helper module for multiple element composite classes
5
+ # Helper module for multiple element composite classes
5
6
  module MultipleElementsHelper
6
7
  # @return [Range, nil] gives range for limiting multiple elements or nil
7
8
  def custom_range
8
- custom_range = self.hash[:custom_range]
9
+ custom_range = hash[:custom_range]
9
10
 
10
11
  case custom_range
11
- when String
12
- integer_array = custom_range.split('..').map { |number| Integer(number) }
13
- return integer_array[0]..integer_array[1]
14
- when Hash
15
- return custom_range[:start].to_i..custom_range[:end].to_i
12
+ when String
13
+ integer_array = custom_range.split('..').map { |number| Integer(number) }
14
+ return integer_array[0]..integer_array[1]
15
+ when Hash
16
+ return custom_range[:start].to_i..custom_range[:end].to_i
16
17
  end
17
18
 
18
- return nil
19
+ nil
19
20
  end
20
21
 
21
22
  # @return [Symbol, nil] gives element method to remove duplicates on or nil
22
23
  def remove_duplicates
23
- remove_duplicates = self.hash[:remove_duplicates]
24
+ remove_duplicates = hash[:remove_duplicates]
24
25
 
25
26
  case remove_duplicates
26
- when Symbol, String
27
- return remove_duplicates.to_sym
28
- else
29
- return nil
27
+ when Symbol, String
28
+ return remove_duplicates.to_sym
29
+ else
30
+ return nil
30
31
  end
31
32
  end
32
33
  end
33
34
  end
34
35
  end
35
- end
36
+ end
@@ -1,26 +1,27 @@
1
+ # frozen_string_literal: true
1
2
  module AutomationObject
2
3
  module BluePrint
3
4
  module HashAdapter
4
- #ValidatorError exception class
5
- #Allows for multiple errors at one time to allow for better debugging
6
- class ValidationError < Exception
5
+ # ValidatorError exception class
6
+ # Allows for multiple errors at one time to allow for better debugging
7
+ class ValidationError < RuntimeError
7
8
  attr_accessor :errors
8
9
 
9
10
  # @param errors [Array, String] pass validation error(s) in, class can handle singular or multiple
10
11
  def initialize(errors)
11
- @errors = (errors.is_a?(Array)) ? errors : [errors]
12
+ @errors = errors.is_a?(Array) ? errors : [errors]
12
13
  end
13
14
 
14
15
  # @return [String] returns full error message
15
16
  def message
16
17
  message = "\nBluePrint::HashAdapter composite validation failed for the following errors:\n"
17
- @errors.each { |error|
18
+ @errors.each do |error|
18
19
  message << " - #{error}\n"
19
- }
20
+ end
20
21
 
21
- return message + "\n"
22
+ message + "\n"
22
23
  end
23
24
  end
24
25
  end
25
26
  end
26
- end
27
+ end
@@ -1,4 +1,5 @@
1
- #Require all the validators
1
+ # frozen_string_literal: true
2
+ # Require all the validators
2
3
  require_relative 'validators/validate_instance_of'
3
4
  require_relative 'validators/validate_allowed_keys'
4
5
  require_relative 'validators/validate_screen_presence_of'
@@ -12,14 +13,16 @@ require_relative '../../../helpers/string'
12
13
  module AutomationObject
13
14
  module BluePrint
14
15
  module HashAdapter
15
- #Validation helper for the composite structure, will allow Rails style validations on the composite
16
+ # Validation helper for the composite structure, will allow Rails style validations on the composite
16
17
  module ValidationHelper
17
18
  attr_accessor :errors
18
19
 
20
+ # Remove getter to solve stupid Ruby warning
21
+ undef :errors if method_defined? :errors
19
22
  # Give errors a default empty Array
20
23
  # @return [Array<String>] errors messages
21
24
  def errors
22
- @errors ||= Array.new
25
+ @errors ||= []
23
26
  end
24
27
 
25
28
  # Give errors a default empty Array
@@ -33,27 +36,25 @@ module AutomationObject
33
36
  def valid?
34
37
  return true if self.class.skip_validations
35
38
 
36
- # ap self.class
37
- #ap self.class.name
39
+ # ap self.class
40
+ # ap self.class.name
38
41
  self.class.validations.collect do |validation|
39
- # ap validation.class.name
42
+ # ap validation.class.name
40
43
  end
41
44
 
42
45
  self.class.validations.collect do |validation|
43
46
  validation.validate(self)
44
- unless validation.valid?
45
- self.add_errors(validation.error_messages)
46
- end
47
+ add_errors(validation.error_messages) unless validation.valid?
47
48
  end
48
49
 
49
- return self.errors.empty?
50
+ self.errors.empty?
50
51
  end
51
52
 
52
53
  def self.included(base)
53
54
  base.extend(ClassMethods)
54
55
  end
55
56
 
56
- #Class level methods
57
+ # Class level methods
57
58
  module ClassMethods
58
59
  def skip_validations=(boolean)
59
60
  @skip_validations = boolean
@@ -67,33 +68,27 @@ module AutomationObject
67
68
  # @param args [Hash] arguments for validation
68
69
  # @return [nil]
69
70
  def validates(key, args = {})
70
- # ap self
71
- # ap self.class.name
72
- # ap key
73
- # ap args
74
-
75
-
76
- args.each { |validator_name, validation_args|
71
+ args.each do |validator_name, validation_args|
77
72
  validator_name = 'Validate' + validator_name.to_s.pascalize
78
73
  validator = Validators.const_get(validator_name)
79
74
 
80
- self.validations.push(validator.new({:key => key, :args => validation_args}))
81
- }
75
+ validations.push(validator.new(key: key, args: validation_args))
76
+ end
82
77
  end
83
78
 
84
79
  # @param args [Hash] arguments for validation
85
80
  # @return [nil]
86
81
  def validates_keys(args = {})
87
- self.validations.push(Validators::ValidateAllowedKeys.new(args))
82
+ validations.push(Validators::ValidateAllowedKeys.new(args))
88
83
  end
89
84
 
90
85
  # @return [Array] list of Validators, default to empty list
91
86
  def validations
92
- @validations = [] unless @validations
93
- return @validations
87
+ @validations = [] unless defined? @validations
88
+ @validations
94
89
  end
95
90
  end
96
91
  end
97
92
  end
98
93
  end
99
- end
94
+ end