automation_object 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
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