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 'composite'
3
4
 
4
5
  require_relative 'hook_action'
@@ -7,29 +8,31 @@ require_relative 'hook_element_requirements'
7
8
  module AutomationObject
8
9
  module BluePrint
9
10
  module HashAdapter
10
- #Hook composite
11
+ # Hook composite
11
12
  class Hook < Composite
12
- #Call the live? method so that it creates the needed Array of ElementRequirement interfaces
13
+ # Call the live? method so that it creates the needed Array of ElementRequirement interfaces
13
14
  before_create :live?
14
15
 
15
- #Relationships
16
+ # Relationships
16
17
  has_one :before, interface: HookAction
17
18
  has_one :after, interface: HookAction
18
19
 
19
- #Validations
20
+ # Validations
20
21
  validates_keys allowed_keys: [:before, :live?, :after]
21
22
 
22
23
  # @return [Array<HookElementRequirements>] array of element requirements
23
24
  def live?
24
- return @live if @live
25
+ return @live if defined? @live
25
26
 
26
- children = self.hash[:live?]
27
- children = (children.is_a?(Array)) ? children : Array.new
27
+ children = hash[:live?]
28
+ children = children.is_a?(Array) ? children : []
28
29
 
29
- @live = self.create_array_children(:live, children, {interface: HookElementRequirements, location: self.location + '[live?]'})
30
- return @live
30
+ @live = create_array_children(:live, children,
31
+ interface: HookElementRequirements,
32
+ location: location + '[live?]')
33
+ @live
31
34
  end
32
35
  end
33
36
  end
34
37
  end
35
- end
38
+ end
@@ -1,16 +1,17 @@
1
- #Require parent class
1
+ # frozen_string_literal: true
2
+ # Require parent class
2
3
  require_relative 'composite'
3
4
  require_relative 'hook_element_requirements'
4
5
 
5
6
  module AutomationObject
6
7
  module BluePrint
7
8
  module HashAdapter
8
- #Hook action composite
9
+ # Hook action composite
9
10
  class HookAction < Composite
10
- #Call the wait_for_elements method to generate the children
11
+ # Call the wait_for_elements method to generate the children
11
12
  before_create :wait_for_elements
12
13
 
13
- #Validations
14
+ # Validations
14
15
  validates_keys allowed_keys: [:new_screen, :show_modal, :close_screen, :change_screen,
15
16
  :sleep, :wait_for_elements, :change_to_previous_screen, :close_modal, :reset_screen,
16
17
  :possible_screen_changes]
@@ -26,109 +27,106 @@ module AutomationObject
26
27
  validates :sleep, instance_of: Numeric
27
28
  validates :wait_for_elements, instance_of: Array
28
29
 
29
- #Get the order to run the hook in
30
+ # Get the order to run the hook in
30
31
  # @return [Array<Symbol>] list of hook methods to run in given order
31
32
  def hook_order
32
- return self.hash.keys
33
+ hash.keys
33
34
  end
34
35
 
35
- #Get length of hook actions
36
+ # Get length of hook actions
36
37
  # @return [Integer] length of hook actions
37
38
  def length
38
- return self.hash.keys.length
39
+ hash.keys.length
39
40
  end
40
41
 
41
- #See if hook actions are empty
42
+ # See if hook actions are empty
42
43
  # @return [Boolean] if hook actions are empty
43
44
  def empty?
44
- return !(self.hash.keys.length > 0)
45
+ hash.keys.empty?
45
46
  end
46
47
 
47
48
  # @return [Symbol, nil] screen to change to
48
49
  def change_screen
49
- change_screen = self.hash[:change_screen]
50
+ change_screen = hash[:change_screen]
50
51
 
51
52
  case change_screen
52
- when Symbol, String
53
- return change_screen.to_sym
54
- else
55
- return nil
53
+ when Symbol, String
54
+ return change_screen.to_sym
55
+ else
56
+ return nil
56
57
  end
57
58
  end
58
59
 
59
60
  # @return [Symbol, nil] new screen
60
61
  def new_screen
61
- new_screen = self.hash[:new_screen]
62
+ new_screen = hash[:new_screen]
62
63
 
63
64
  case new_screen
64
- when Symbol, String
65
- return new_screen.to_sym
66
- else
67
- return nil
65
+ when Symbol, String
66
+ return new_screen.to_sym
67
+ else
68
+ return nil
68
69
  end
69
70
  end
70
71
 
71
72
  # @return [Boolean]
72
73
  def close_screen
73
- return self.hash[:close_screen] ||= false
74
+ hash[:close_screen] ||= false
74
75
  end
75
76
 
76
77
  # @return [Boolean]
77
78
  def close_modal
78
- return self.hash[:close_modal] ||= false
79
+ hash[:close_modal] ||= false
79
80
  end
80
81
 
81
82
  # @return [Boolean]
82
83
  def change_to_previous_screen
83
- return self.hash[:change_to_previous_screen] ||= false
84
+ hash[:change_to_previous_screen] ||= false
84
85
  end
85
86
 
86
87
  # @return [Symbol, nil]
87
88
  def show_modal
88
- show_modal = self.hash[:show_modal]
89
+ show_modal = hash[:show_modal]
89
90
 
90
91
  case show_modal
91
- when Symbol, String
92
- return show_modal.to_sym
93
- else
94
- return nil
92
+ when Symbol, String
93
+ return show_modal.to_sym
94
+ else
95
+ return nil
95
96
  end
96
97
  end
97
98
 
98
99
  # @return [Array]
99
100
  def possible_screen_changes
100
- if self.hash[:possible_screen_changes].is_a?(Array)
101
- return self.hash[:possible_screen_changes].map { |value| value.to_sym }
102
- else
103
- return Array.new
104
- end
101
+ return hash[:possible_screen_changes].map(&:to_sym) if hash[:possible_screen_changes].is_a?(Array)
102
+
103
+ []
105
104
  end
106
105
 
107
- #@return [Boolean] reset the screen?
106
+ # @return [Boolean] reset the screen?
108
107
  def reset_screen
109
- return self.hash[:reset_screen] ||= false
108
+ hash[:reset_screen] ||= false
110
109
  end
111
110
 
112
- #@return [Numeric] amount of time to sleep
111
+ # @return [Numeric] amount of time to sleep
113
112
  def sleep
114
- return self.hash[:sleep] ||= 0
113
+ hash[:sleep] ||= 0
115
114
  end
116
115
 
117
- #Custom method for array of children instead of Hash
116
+ # Custom method for array of children instead of Hash
118
117
  # @return [Array<HookElementRequirements>] array of wait for element children
119
118
  def wait_for_elements
120
- return @wait_for_elements if @wait_for_elements
121
- wait_for_elements = self.hash[:wait_for_elements]
119
+ return @wait_for_elements if defined? @wait_for_elements
120
+ wait_for_elements = hash[:wait_for_elements]
122
121
 
123
- children = (wait_for_elements.is_a?(Array)) ? wait_for_elements : Array.new
124
- @wait_for_elements = self.create_array_children(:wait_for_elements, children,
125
- {interface: HookElementRequirements,
126
- location: self.location + '[wait_for_elements]'
127
- })
122
+ children = wait_for_elements.is_a?(Array) ? wait_for_elements : []
123
+ @wait_for_elements = create_array_children(:wait_for_elements, children,
124
+ interface: HookElementRequirements,
125
+ location: location + '[wait_for_elements]')
128
126
 
129
- return @wait_for_elements
127
+ @wait_for_elements
130
128
  end
131
129
  end
132
130
  end
133
131
  end
134
- end
132
+ end
@@ -1,64 +1,60 @@
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
- #Hook Element Requirements-level composite
8
+ # Hook Element Requirements-level composite
8
9
  class HookElementRequirements < Composite
9
- #Valdiations
10
+ # Valdiations
10
11
  validates :element_name, presence_of: true, instance_of: [String, Symbol], element_presence_of: true
11
12
  validates :exists?, presence_of: true, instance_of: [FalseClass, TrueClass]
12
13
 
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
- hook_order = [:exists?] #Always put exists? first
17
+ hook_order = [:exists?] # Always put exists? first
17
18
 
18
- self.hash.keys.each { |hook_name|
19
+ hash.each_key do |hook_name|
19
20
  hook_order.push(hook_name) unless [:element_name, :exists?].include?(hook_name)
20
- }
21
+ end
21
22
 
22
- return hook_order
23
+ hook_order
23
24
  end
24
25
 
25
- #Get element requirement
26
+ # Get element requirement
26
27
  # @param name [Symbol] name of requested requirement
27
28
  def requirement(name)
28
- return self.hash[name] ||= nil
29
+ hash[name] ||= nil
29
30
  end
30
31
 
31
- #Get name of the element
32
+ # Get name of the element
32
33
  # @return [Symbol] name of element
33
34
  def element_name
34
- element_name = self.hash[:element_name]
35
+ element_name = hash[:element_name]
35
36
 
36
37
  case element_name
37
- when Symbol, String
38
- return element_name.to_sym
39
- else
40
- return nil
38
+ when Symbol, String
39
+ return element_name.to_sym
40
+ else
41
+ return nil
41
42
  end
42
43
  end
43
44
 
44
- #Convience for getting element blueprints
45
+ # Convience for getting element blueprints
45
46
  # @return [AutomationObject::BluePrint::HashAdapter::Element]
46
47
  def element_blueprints(composite_object = nil)
47
- unless composite_object
48
- composite_object = self
49
- end
48
+ composite_object = self unless composite_object
50
49
 
51
- #Traverse!
52
- if composite_object.hash[:elements].is_a?(Hash)
50
+ # Traverse!
51
+ return composite_object.elements[element_name] if composite_object.hash[:elements].is_a?(Hash)
53
52
 
54
- return composite_object.elements[self.element_name]
55
- elsif composite_object.parent
56
- return self.element_blueprints(composite_object.parent)
57
- end
53
+ return element_blueprints(composite_object.parent) if composite_object.parent
58
54
 
59
- return nil
55
+ nil
60
56
  end
61
57
  end
62
58
  end
63
59
  end
64
- end
60
+ end
@@ -1,7 +1,8 @@
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 'element'
6
7
  require_relative 'element_array'
7
8
  require_relative 'element_hash'
@@ -10,16 +11,16 @@ require_relative 'hook'
10
11
  module AutomationObject
11
12
  module BluePrint
12
13
  module HashAdapter
13
- #Modal-level composite, ActiveRecord style composite implementation inheriting from Composite
14
+ # Modal-level composite, ActiveRecord style composite implementation inheriting from Composite
14
15
  class Modal < Composite
15
- #Relationships
16
+ # Relationships
16
17
  has_one :load, interface: Hook
17
18
 
18
19
  has_many :elements, interface: Element
19
20
  has_many :element_arrays, interface: ElementArray
20
21
  has_many :element_hashes, interface: ElementHash
21
22
 
22
- #Validations
23
+ # Validations
23
24
  validates_keys allowed_keys: [:load, :elements, :element_arrays, :element_hashes]
24
25
 
25
26
  validates :load, instance_of: Hash
@@ -29,24 +30,24 @@ module AutomationObject
29
30
 
30
31
  # @return [Array<Symbol>] array of views this can has
31
32
  def included_views
32
- included_views_array = self.hash[:included_views] ||= Array.new
33
- included_views_array.map { |view| view.to_sym }
33
+ included_views_array = hash[:included_views] ||= []
34
+ included_views_array.map(&:to_sym)
34
35
  end
35
36
 
36
- #Method to take views and merge into this composite
37
+ # Method to take views and merge into this composite
37
38
  def merge_views
38
- top_hash = self.top.hash
39
+ top_hash = top.hash
39
40
 
40
41
  return unless top_hash.is_a?(Hash)
41
42
  return unless top_hash[:views].is_a?(Hash)
42
43
  top_view_hash = top_hash[:views]
43
44
 
44
- self.included_views.each { |included_view|
45
+ included_views.each do |included_view|
45
46
  next unless top_view_hash[included_view].is_a?(Hash)
46
- self.hash = self.hash.deep_merge(top_view_hash[included_view])
47
- }
47
+ self.hash = hash.deep_merge(top_view_hash[included_view])
48
+ end
48
49
  end
49
50
  end
50
51
  end
51
52
  end
52
- end
53
+ end
@@ -1,7 +1,8 @@
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 'automatic_onload_modal'
6
7
  require_relative 'element'
7
8
  require_relative 'element_array'
@@ -12,13 +13,13 @@ require_relative 'modal'
12
13
  module AutomationObject
13
14
  module BluePrint
14
15
  module HashAdapter
15
- #Screen-level composite, ActiveRecord style composite implementation inheriting from Composite
16
+ # Screen-level composite, ActiveRecord style composite implementation inheriting from Composite
16
17
  class Screen < Composite
17
- #Creation hooks
18
+ # Creation hooks
18
19
  before_create :merge_views
19
20
  before_create :automatic_onload_modals
20
21
 
21
- #Relationships
22
+ # Relationships
22
23
  has_one :load, interface: Hook
23
24
  has_one :accept, interface: Hook
24
25
  has_one :dismiss, interface: Hook
@@ -28,7 +29,7 @@ module AutomationObject
28
29
  has_many :element_arrays, interface: ElementArray
29
30
  has_many :element_hashes, interface: ElementHash
30
31
 
31
- #Validations
32
+ # Validations
32
33
  validates_keys allowed_keys: [:automatic_onload_modals, :automatic_screen_changes, :elements,
33
34
  :element_arrays, :element_hashes, :included_views, :load, :modals]
34
35
 
@@ -49,41 +50,41 @@ module AutomationObject
49
50
 
50
51
  # @return [Array<AutomaticOnloadModal>] array of AutomaticOnloadModal that are defined under the screen
51
52
  def automatic_onload_modals
52
- return @automatic_onload_modals if @automatic_onload_modals
53
+ return @automatic_onload_modals if defined? @automatic_onload_modals
53
54
 
54
- children = self.hash[:automatic_onload_modals]
55
- children = (children.is_a?(Array)) ? children : Array.new
56
- @automatic_onload_modals = self.create_array_children(:automatic_onload_modals, children,
57
- {interface: AutomaticOnloadModal,
58
- location: self.location + '[automatic_onload_modals]'})
55
+ children = hash[:automatic_onload_modals]
56
+ children = children.is_a?(Array) ? children : []
57
+ @automatic_onload_modals = create_array_children(:automatic_onload_modals, children,
58
+ interface: AutomaticOnloadModal,
59
+ location: location + '[automatic_onload_modals]')
59
60
 
60
- return @automatic_onload_modals
61
+ @automatic_onload_modals
61
62
  end
62
63
 
63
64
  # @return [Array<Symbol>] array of screens where screen can automatically change to
64
65
  def automatic_screen_changes
65
- screen_array = self.hash[:automatic_screen_changes] ||= Array.new
66
- screen_array.map { |screen| screen.to_sym }
66
+ screen_array = hash[:automatic_screen_changes] ||= []
67
+ screen_array.map(&:to_sym)
67
68
  end
68
69
 
69
70
  # @return [Array<Symbol>] array of views this can has
70
71
  def included_views
71
- included_views_array = self.hash[:included_views] ||= Array.new
72
- included_views_array.map { |view| view.to_sym }
72
+ included_views_array = hash[:included_views] ||= []
73
+ included_views_array.map(&:to_sym)
73
74
  end
74
75
 
75
- #Method to take views and merge into this composite
76
+ # Method to take views and merge into this composite
76
77
  def merge_views
77
- top_hash = self.top.hash
78
+ top_hash = top.hash
78
79
 
79
80
  return unless top_hash.is_a?(Hash)
80
81
  return unless top_hash[:views].is_a?(Hash)
81
82
  top_view_hash = top_hash[:views]
82
83
 
83
- self.included_views.each { |included_view|
84
+ included_views.each do |included_view|
84
85
  next unless top_view_hash[included_view].is_a?(Hash)
85
- self.hash = self.hash.deep_merge(top_view_hash[included_view])
86
- }
86
+ self.hash = hash.deep_merge(top_view_hash[included_view])
87
+ end
87
88
  end
88
89
  end
89
90
  end