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,4 +1,5 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'base'
3
4
 
4
5
  require_relative 'element'
@@ -6,34 +7,34 @@ require_relative 'element'
6
7
  module AutomationObject
7
8
  module BluePrint
8
9
  module Composite
9
- #HookElementRequirements composite class, passing method to adapter only
10
- #Hoping to improve code completion and standard interface where
11
- #classes use this as a template to add additional adapters
10
+ # HookElementRequirements composite class, passing method to adapter only
11
+ # Hoping to improve code completion and standard interface where
12
+ # classes use this as a template to add additional adapters
12
13
  class HookElementRequirements < Base
13
- #Get the order to run the hook in
14
+ # Get the order to run the hook in
14
15
  # @return [Array<Symbol>] list of hook methods to run in given order
15
16
  def hook_order
16
- self.adapter.hook_order
17
+ adapter.hook_order
17
18
  end
18
19
 
19
- #Get element requirement
20
+ # Get element requirement
20
21
  # @param name [Symbol] name of requested requirement
21
22
  def requirement(name)
22
- self.adapter.requirement(name)
23
+ adapter.requirement(name)
23
24
  end
24
25
 
25
- #Get name of the element
26
+ # Get name of the element
26
27
  # @return [Symbol] name of element
27
28
  def element_name
28
- self.adapter.element_name
29
+ adapter.element_name
29
30
  end
30
31
 
31
- #Convience for getting element blueprints
32
+ # Convience for getting element blueprints
32
33
  # @return [AutomationObject::BluePrint::Composite::Element]
33
34
  def element_blueprints(composite_object = nil)
34
- self.adapter.element_blueprints(composite_object)
35
+ adapter.element_blueprints(composite_object)
35
36
  end
36
37
  end
37
38
  end
38
39
  end
39
- end
40
+ end
@@ -1,10 +1,10 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'base'
3
4
 
4
5
  require_relative 'automatic_onload_modal'
5
6
  require_relative 'hook'
6
7
 
7
- require_relative 'modal'
8
8
  require_relative 'element'
9
9
  require_relative 'element_array'
10
10
  require_relative 'element_hash'
@@ -12,45 +12,35 @@ require_relative 'element_hash'
12
12
  module AutomationObject
13
13
  module BluePrint
14
14
  module Composite
15
- #Modal composite class, passing method to adapter only
16
- #Hoping to improve code completion and standard interface where
17
- #classes use this as a template to add additional adapters
15
+ # Modal composite class, passing method to adapter only
16
+ # Hoping to improve code completion and standard interface where
17
+ # classes use this as a template to add additional adapters
18
18
  class Modal < Base
19
19
  # @return [Array<Symbol>]
20
20
  def included_views
21
- self.adapter.screens
22
- end
23
-
24
- # @return [Array<AutomaticOnloadModal>]
25
- def automatic_onload_modals
26
- self.adapter.automatic_onload_modals
27
- end
28
-
29
- # @return [Array<Symbol>]
30
- def automatic_screen_changes
31
- self.adapter.automatic_screen_changes
21
+ adapter.screens
32
22
  end
33
23
 
34
24
  # @return [Hook]
35
25
  def load
36
- self.adapter.load
26
+ adapter.load
37
27
  end
38
28
 
39
29
  # @return [Hash<Element>]
40
30
  def elements
41
- self.adapter.elements
31
+ adapter.elements
42
32
  end
43
33
 
44
34
  # @return [Hash<ElementArray>]
45
35
  def element_arrays
46
- self.adapter.element_arrays
36
+ adapter.element_arrays
47
37
  end
48
38
 
49
39
  # @return [Hash<ElementHash>]
50
40
  def element_hashes
51
- self.adapter.element_hashes
41
+ adapter.element_hashes
52
42
  end
53
43
  end
54
44
  end
55
45
  end
56
- end
46
+ end
@@ -1,4 +1,5 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'base'
3
4
 
4
5
  require_relative 'automatic_onload_modal'
@@ -12,48 +13,53 @@ require_relative 'element_hash'
12
13
  module AutomationObject
13
14
  module BluePrint
14
15
  module Composite
15
- #Screen composite class, passing method to adapter only
16
- #Hoping to improve code completion and standard interface where
17
- #classes use this as a template to add additional adapters
16
+ # Screen composite class, passing method to adapter only
17
+ # Hoping to improve code completion and standard interface where
18
+ # classes use this as a template to add additional adapters
18
19
  class Screen < Base
19
- # @return [Array<Symbol>]
20
- def included_views
21
- self.adapter.screens
22
- end
23
-
24
20
  # @return [Array<AutomaticOnloadModal>]
25
21
  def automatic_onload_modals
26
- self.adapter.automatic_onload_modals
22
+ adapter.automatic_onload_modals
27
23
  end
28
24
 
29
25
  # @return [Array<Symbol>]
30
26
  def automatic_screen_changes
31
- self.adapter.automatic_screen_changes
27
+ adapter.automatic_screen_changes
28
+ end
29
+
30
+ # @return [Hook]
31
+ def accept
32
+ adapter.accept
33
+ end
34
+
35
+ # @return [Hook]
36
+ def dismiss
37
+ adapter.dismiss
32
38
  end
33
39
 
34
40
  # @return [Hook]
35
41
  def load
36
- self.adapter.load
42
+ adapter.load
37
43
  end
38
44
 
39
45
  # @return [Hash<Modal>]
40
46
  def modals
41
- self.adapter.modals
47
+ adapter.modals
42
48
  end
43
49
 
44
50
  # @return [Hash<Element>]
45
51
  def elements
46
- self.adapter.elements
52
+ adapter.elements
47
53
  end
48
54
 
49
55
  # @return [Hash<ElementArray>]
50
56
  def element_arrays
51
- self.adapter.element_arrays
57
+ adapter.element_arrays
52
58
  end
53
59
 
54
60
  # @return [Hash<ElementHash>]
55
61
  def element_hashes
56
- self.adapter.element_hashes
62
+ adapter.element_hashes
57
63
  end
58
64
  end
59
65
  end
@@ -1,4 +1,5 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'base'
3
4
 
4
5
  require_relative 'screen'
@@ -7,45 +8,45 @@ require_relative 'view'
7
8
  module AutomationObject
8
9
  module BluePrint
9
10
  module Composite
10
- #Top composite class, passing method to adapter only
11
- #Hoping to improve code completion and standard interface where
12
- #classes use this as a template to add additional adapters
11
+ # Top composite class, passing method to adapter only
12
+ # Hoping to improve code completion and standard interface where
13
+ # classes use this as a template to add additional adapters
13
14
  class Top < Base
14
15
  # @return [Hash<Screen>]
15
16
  def screens
16
- self.adapter.screens
17
+ adapter.screens
17
18
  end
18
19
 
19
20
  # @return [Hash<View>]
20
21
  def views
21
- self.adapter.views
22
+ adapter.views
22
23
  end
23
24
 
24
25
  # @return [String, nil] base url to navigate to upon framework creation
25
26
  def base_url
26
- self.adapter.base_url
27
+ adapter.base_url
27
28
  end
28
29
 
29
30
  # @return [Symbol, nil] default screen to be set when framework is created
30
31
  def default_screen
31
- self.adapter.default_screen
32
+ adapter.default_screen
32
33
  end
33
34
 
34
35
  # @return [Numeric] sleep when transitioning screens
35
36
  def screen_transition_sleep
36
- self.adapter.screen_transition_sleep
37
+ adapter.screen_transition_sleep
37
38
  end
38
39
 
39
40
  # @return [Hash] driver methods to throttle
40
41
  def throttle_driver_methods
41
- self.adapter.throttle_driver_methods
42
+ adapter.throttle_driver_methods
42
43
  end
43
44
 
44
45
  # @return [Hash] element methods to throttle
45
46
  def throttle_element_methods
46
- self.adapter.throttle_element_methods
47
+ adapter.throttle_element_methods
47
48
  end
48
49
  end
49
50
  end
50
51
  end
51
- end
52
+ end
@@ -1,48 +1,59 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'base'
3
4
 
4
5
  module AutomationObject
5
6
  module BluePrint
6
7
  module Composite
7
- #View composite class, passing method to adapter only
8
- #Hoping to improve code completion and standard interface where
9
- #classes use this as a template to add additional adapters
8
+ # View composite class, passing method to adapter only
9
+ # Hoping to improve code completion and standard interface where
10
+ # classes use this as a template to add additional adapters
10
11
  class View < Base
12
+ # @return [Hook]
13
+ def load
14
+ adapter.load
15
+ end
16
+
17
+ # @return [Hook]
18
+ def accept
19
+ adapter.accept
20
+ end
21
+
22
+ # @return [Hook]
23
+ def dismiss
24
+ adapter.dismiss
25
+ end
26
+
11
27
  # @return [Array<AutomaticOnloadModal>]
12
28
  def automatic_onload_modals
13
- self.adapter.automatic_onload_modals
29
+ adapter.automatic_onload_modals
14
30
  end
15
31
 
16
32
  # @return [Array<Symbol>]
17
33
  def automatic_screen_changes
18
- self.adapter.automatic_screen_changes
19
- end
20
-
21
- # @return [Hook]
22
- def load
23
- self.adapter.load
34
+ adapter.automatic_screen_changes
24
35
  end
25
36
 
26
37
  # @return [Hash<Modal>]
27
38
  def modals
28
- self.adapter.modals
39
+ adapter.modals
29
40
  end
30
41
 
31
42
  # @return [Hash<Element>]
32
43
  def elements
33
- self.adapter.elements
44
+ adapter.elements
34
45
  end
35
46
 
36
47
  # @return [Hash<ElementArray>]
37
48
  def element_arrays
38
- self.adapter.element_arrays
49
+ adapter.element_arrays
39
50
  end
40
51
 
41
52
  # @return [Hash<ElementHash>]
42
53
  def element_hashes
43
- self.adapter.element_hashes
54
+ adapter.element_hashes
44
55
  end
45
56
  end
46
57
  end
47
58
  end
48
- end
59
+ end
@@ -1,17 +1,21 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'composite/top'
2
3
  require_relative 'hash_adapter/top'
3
4
 
4
- module AutomationObject::BluePrint
5
- #BluePrint Hash Adapter
6
- module HashAdapter
7
- extend self
8
- # @param [Hash] hash that includes all the information needed to create a BluePrint
9
- # @return [AutomationObject::BluePrint::Composite::Top] Composite BluePrint Object
10
- def build(hash = {})
11
- hash.symbolize_keys_deep!
5
+ module AutomationObject
6
+ module BluePrint
7
+ # BluePrint Hash Adapter
8
+ module HashAdapter
9
+ module_function
12
10
 
13
- top_hash = AutomationObject::BluePrint::HashAdapter::Top.new(hash)
14
- AutomationObject::BluePrint::Composite::Top.new(top_hash)
11
+ # @param [Hash] hash that includes all the information needed to create a BluePrint
12
+ # @return [AutomationObject::BluePrint::Composite::Top] Composite BluePrint Object
13
+ def build(hash = {})
14
+ hash.symbolize_keys_deep!
15
+
16
+ top_hash = AutomationObject::BluePrint::HashAdapter::Top.new(hash)
17
+ AutomationObject::BluePrint::Composite::Top.new(top_hash)
18
+ end
15
19
  end
16
20
  end
17
- end
21
+ end
@@ -1,35 +1,36 @@
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
- #Automatic Onload Modal Composite
8
+ # Automatic Onload Modal Composite
8
9
  class AutomaticOnloadModal < Composite
9
- #Validations
10
+ # Validations
10
11
  validates :modal_name, instance_of: [String, Symbol], modal_presence_of: true, presence_of: true
11
12
  validates :number_of_checks, instance_of: Numeric
12
13
  validates :close, instance_of: TrueClass
13
14
 
14
15
  def modal_name
15
- modal_name = self.hash[:modal_name]
16
+ modal_name = hash[:modal_name]
16
17
 
17
18
  case modal_name
18
- when Symbol, String
19
- return modal_name.to_sym
20
- else
21
- return nil
19
+ when Symbol, String
20
+ return modal_name.to_sym
21
+ else
22
+ return nil
22
23
  end
23
24
  end
24
25
 
25
26
  def number_of_checks
26
- return self.hash[:number_of_checks] ||= 1
27
+ hash[:number_of_checks] ||= 1
27
28
  end
28
29
 
29
30
  def close
30
- return self.hash[:close] ||= false
31
+ hash[:close] ||= false
31
32
  end
32
33
  end
33
34
  end
34
35
  end
35
- end
36
+ end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  require_relative '../../helpers/composite'
3
+ require_relative '../../helpers/string'
2
4
 
3
5
  require_relative 'helpers/validation_helper'
4
6
  require_relative 'helpers/validation_error'
@@ -6,6 +8,7 @@ require_relative 'helpers/validation_error'
6
8
  module AutomationObject
7
9
  module BluePrint
8
10
  module HashAdapter
11
+ # Base composite for blue print hash adapter
9
12
  class Composite < AutomationObject::Composite
10
13
  include ValidationHelper
11
14
 
@@ -16,28 +19,26 @@ module AutomationObject
16
19
  # @param parent [Object, nil] parent composite object
17
20
  # @param location [String] string location for error/debugging purposes
18
21
  def initialize(hash = {}, name = :top, parent = nil, location = 'top')
19
- #Add hash before calling super
20
- self.hash = (hash.is_a?(Hash)) ? hash : {}
22
+ # Add hash before calling super
23
+ self.hash = hash.is_a?(Hash) ? hash : {}
21
24
  self.hash.symbolize_keys_deep!
22
25
 
23
26
  super(name, parent, location)
24
27
 
25
- #Validate using ValidationHelper
26
- unless self.valid?
27
- if self.parent
28
- self.parent.add_errors(self.errors)
29
- else
30
- raise ValidationError.new(self.errors.uniq.reverse)
31
- end
32
- end
28
+ # Validate using ValidationHelper
29
+ return if valid?
30
+
31
+ raise ValidationError, errors.uniq.reverse unless self.parent
32
+
33
+ self.parent.add_errors(errors)
33
34
  end
34
35
 
35
36
  # Overriding base get_child method
36
37
  # @param name [Symbol] name of child
37
38
  # @param options [Hash] options for child
38
39
  def get_child(name, options)
39
- child = (self.hash[name].is_a?(Hash)) ? self.hash[name] : Hash.new
40
- child_location = self.location + "[#{name}]"
40
+ child = hash[name].is_a?(Hash) ? hash[name] : {}
41
+ child_location = location + "[#{name}]"
41
42
 
42
43
  create_composite(options, child, name, child_location)
43
44
  end
@@ -47,42 +48,44 @@ module AutomationObject
47
48
  # @param options [Hash] options for child
48
49
  # @return children [Hash] return children and names
49
50
  def get_children(name, options)
50
- children = self.hash[name]
51
- children = (children.is_a?(Hash)) ? children : Hash.new
51
+ children = hash[name]
52
+ children = children.is_a?(Hash) ? children : {}
52
53
 
53
- self.create_hash_children(children, options)
54
+ create_hash_children(children, options)
54
55
  end
55
56
 
56
57
  # @param name [Symbol] name of child
57
58
  # @param children [Array] hash of children
58
59
  # @param args [Hash] arguments for adding children
59
60
  def create_array_children(name, children, args)
60
- composite_children = children.map.with_index { |child, index|
61
- location = (args[:location]) ? args[:location] : self.location
61
+ composite_children = children.map.with_index do |child, index|
62
+ location = args[:location] ? args[:location] : self.location
62
63
  child_location = location + "[#{index}]"
63
64
 
64
65
  create_composite(args, child, "#{name}[#{index}]", child_location)
65
- }
66
+ end
66
67
 
67
- return composite_children
68
+ composite_children
68
69
  end
69
70
 
70
71
  # @param children [Hash] hash of children
71
72
  # @param args [Hash] arguments for adding children
72
73
  def create_hash_children(children, args)
73
- composite_children = children.inject({}) { |hash, (key, value)|
74
- child_location = self.location + "[#{key}]"
74
+ composite_children = children.each_with_object({}) do |(key, value), hash|
75
+ child_location = location + "[#{key}]"
75
76
 
76
77
  hash[key] = create_composite(args, value, key, child_location)
77
78
  hash
78
- }
79
+ end
79
80
 
80
- return composite_children
81
+ composite_children
81
82
  end
82
83
 
83
84
  def create_composite(args, child, name, location)
84
- #Get the Composite Class that corresponds with the HashAdapter Class
85
+ # Get the Composite Class that corresponds with the HashAdapter Class
85
86
  class_name = args[:interface].name.split('::').last
87
+
88
+ require_relative "../composite/#{class_name.to_underscore}"
86
89
  composite_class = AutomationObject::BluePrint::Composite.const_get(class_name)
87
90
 
88
91
  composite_class.new(args[:interface].new(child, name, self, location))
@@ -90,4 +93,4 @@ module AutomationObject
90
93
  end
91
94
  end
92
95
  end
93
- end
96
+ end