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 '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