automation_object 0.0.4 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/lib/automation_object.rb +14 -72
  3. data/lib/automation_object/blue_print.rb +37 -100
  4. data/lib/automation_object/blue_print/composite/automatic_onload_modal.rb +28 -0
  5. data/lib/automation_object/blue_print/composite/base.rb +18 -0
  6. data/lib/automation_object/blue_print/composite/custom_method.rb +23 -0
  7. data/lib/automation_object/blue_print/composite/element.rb +20 -0
  8. data/lib/automation_object/blue_print/composite/element_array.rb +21 -0
  9. data/lib/automation_object/blue_print/composite/element_hash.rb +26 -0
  10. data/lib/automation_object/blue_print/composite/helpers/element_helper.rb +33 -0
  11. data/lib/automation_object/blue_print/composite/helpers/multiple_elements_helper.rb +18 -0
  12. data/lib/automation_object/blue_print/composite/hook.rb +31 -0
  13. data/lib/automation_object/blue_print/composite/hook_action.rb +84 -0
  14. data/lib/automation_object/blue_print/composite/hook_element_requirements.rb +39 -0
  15. data/lib/automation_object/blue_print/composite/modal.rb +56 -0
  16. data/lib/automation_object/blue_print/composite/screen.rb +61 -0
  17. data/lib/automation_object/blue_print/composite/top.rb +51 -0
  18. data/lib/automation_object/blue_print/composite/view.rb +48 -0
  19. data/lib/automation_object/blue_print/hash_adapter.rb +17 -0
  20. data/lib/automation_object/blue_print/hash_adapter/automatic_onload_modal.rb +35 -0
  21. data/lib/automation_object/blue_print/hash_adapter/composite.rb +93 -0
  22. data/lib/automation_object/blue_print/hash_adapter/custom_method.rb +30 -0
  23. data/lib/automation_object/blue_print/hash_adapter/element.rb +34 -0
  24. data/lib/automation_object/blue_print/hash_adapter/element_array.rb +36 -0
  25. data/lib/automation_object/blue_print/hash_adapter/element_hash.rb +43 -0
  26. data/lib/automation_object/blue_print/hash_adapter/helpers/element_helper.rb +59 -0
  27. data/lib/automation_object/blue_print/hash_adapter/helpers/multiple_elements_helper.rb +35 -0
  28. data/lib/automation_object/blue_print/hash_adapter/helpers/validation_error.rb +26 -0
  29. data/lib/automation_object/blue_print/hash_adapter/helpers/validation_helper.rb +99 -0
  30. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate.rb +23 -0
  31. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_allowed_keys.rb +31 -0
  32. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_element_presence_of.rb +55 -0
  33. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_instance_of.rb +39 -0
  34. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_modal_presence_of.rb +54 -0
  35. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_presence_of.rb +36 -0
  36. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_screen_presence_of.rb +55 -0
  37. data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_view_presence_of.rb +52 -0
  38. data/lib/automation_object/blue_print/hash_adapter/hook.rb +35 -0
  39. data/lib/automation_object/blue_print/hash_adapter/hook_action.rb +134 -0
  40. data/lib/automation_object/blue_print/hash_adapter/hook_element_requirements.rb +64 -0
  41. data/lib/automation_object/blue_print/hash_adapter/modal.rb +52 -0
  42. data/lib/automation_object/blue_print/hash_adapter/screen.rb +91 -0
  43. data/lib/automation_object/blue_print/hash_adapter/top.rb +63 -0
  44. data/lib/automation_object/blue_print/hash_adapter/view.rb +29 -0
  45. data/lib/automation_object/blue_print/helpers/file_helper.rb +38 -0
  46. data/lib/automation_object/blue_print/yaml_adapter.rb +50 -0
  47. data/lib/automation_object/driver.rb +44 -0
  48. data/lib/automation_object/driver/appium_adapter/driver.rb +150 -0
  49. data/lib/automation_object/driver/appium_adapter/element.rb +118 -0
  50. data/lib/automation_object/driver/base.rb +11 -0
  51. data/lib/automation_object/driver/driver.rb +69 -245
  52. data/lib/automation_object/driver/element.rb +51 -210
  53. data/lib/automation_object/driver/helpers/selenium_driver_helper.rb +41 -0
  54. data/lib/automation_object/driver/helpers/selenium_element_helper.rb +138 -0
  55. data/lib/automation_object/driver/nokogiri_adapter/backup/driver.rb +83 -0
  56. data/lib/automation_object/driver/nokogiri_adapter/backup/element.rb +66 -0
  57. data/lib/automation_object/driver/nokogiri_adapter/backup/form.rb +29 -0
  58. data/lib/automation_object/driver/nokogiri_adapter/backup/helpers/driver_element_helper.rb +52 -0
  59. data/lib/automation_object/driver/nokogiri_adapter/backup/session.rb +115 -0
  60. data/lib/automation_object/driver/nokogiri_adapter/driver.rb +104 -0
  61. data/lib/automation_object/driver/nokogiri_adapter/element.rb +85 -0
  62. data/lib/automation_object/driver/nokogiri_adapter/error.rb +17 -0
  63. data/lib/automation_object/driver/selenium_adapter/driver.rb +143 -0
  64. data/lib/automation_object/driver/selenium_adapter/element.rb +116 -0
  65. data/lib/automation_object/dsl.rb +33 -0
  66. data/lib/automation_object/dsl/blue_print_adapter.rb +16 -0
  67. data/lib/automation_object/dsl/blue_print_adapter/composite.rb +54 -0
  68. data/lib/automation_object/dsl/blue_print_adapter/element.rb +14 -0
  69. data/lib/automation_object/dsl/blue_print_adapter/element_array.rb +14 -0
  70. data/lib/automation_object/dsl/blue_print_adapter/element_hash.rb +14 -0
  71. data/lib/automation_object/dsl/blue_print_adapter/modal.rb +23 -0
  72. data/lib/automation_object/dsl/blue_print_adapter/screen.rb +26 -0
  73. data/lib/automation_object/dsl/blue_print_adapter/top.rb +19 -0
  74. data/lib/automation_object/dsl/models.rb +18 -0
  75. data/lib/automation_object/dsl/proxies/element.rb +16 -0
  76. data/lib/automation_object/dsl/proxies/element_array.rb +16 -0
  77. data/lib/automation_object/dsl/proxies/element_hash.rb +16 -0
  78. data/lib/automation_object/dsl/proxies/helpers/composite_helper.rb +74 -0
  79. data/lib/automation_object/dsl/proxies/modal.rb +17 -0
  80. data/lib/automation_object/dsl/proxies/screen.rb +17 -0
  81. data/lib/automation_object/dsl/proxies/top.rb +17 -0
  82. data/lib/automation_object/framework.rb +79 -386
  83. data/lib/automation_object/helpers/composite.rb +95 -0
  84. data/lib/automation_object/helpers/composite_hook.rb +46 -0
  85. data/lib/automation_object/helpers/hash.rb +15 -0
  86. data/lib/automation_object/helpers/reflection_helper.rb +28 -0
  87. data/lib/automation_object/helpers/string.rb +27 -0
  88. data/lib/automation_object/proxies/mutex_proxy.rb +63 -0
  89. data/lib/automation_object/proxies/proxy.rb +20 -0
  90. data/lib/automation_object/proxies/throttle_proxy.rb +57 -0
  91. data/lib/automation_object/state.rb +37 -0
  92. data/lib/automation_object/state/blue_print_adapter.rb +16 -0
  93. data/lib/automation_object/state/blue_print_adapter/composite.rb +65 -0
  94. data/lib/automation_object/state/blue_print_adapter/element.rb +20 -0
  95. data/lib/automation_object/state/blue_print_adapter/element_array.rb +25 -0
  96. data/lib/automation_object/state/blue_print_adapter/element_hash.rb +31 -0
  97. data/lib/automation_object/state/blue_print_adapter/element_proxy.rb +28 -0
  98. data/lib/automation_object/state/blue_print_adapter/helpers/element_helper.rb +31 -0
  99. data/lib/automation_object/state/blue_print_adapter/helpers/screen_manager.rb +137 -0
  100. data/lib/automation_object/state/blue_print_adapter/helpers/window.rb +39 -0
  101. data/lib/automation_object/state/blue_print_adapter/hook.rb +56 -0
  102. data/lib/automation_object/state/blue_print_adapter/hook_action.rb +33 -0
  103. data/lib/automation_object/state/blue_print_adapter/hook_actions/action_loop.rb +35 -0
  104. data/lib/automation_object/state/blue_print_adapter/hook_actions/change_screen.rb +26 -0
  105. data/lib/automation_object/state/blue_print_adapter/hook_actions/change_to_previous_screen.rb +21 -0
  106. data/lib/automation_object/state/blue_print_adapter/hook_actions/close_modal.rb +31 -0
  107. data/lib/automation_object/state/blue_print_adapter/hook_actions/close_screen.rb +19 -0
  108. data/lib/automation_object/state/blue_print_adapter/hook_actions/element_requirement.rb +34 -0
  109. data/lib/automation_object/state/blue_print_adapter/hook_actions/new_screen.rb +37 -0
  110. data/lib/automation_object/state/blue_print_adapter/hook_actions/possible_screen_changes.rb +21 -0
  111. data/lib/automation_object/state/blue_print_adapter/hook_actions/reset_screen.rb +18 -0
  112. data/lib/automation_object/state/blue_print_adapter/hook_actions/show_modal.rb +26 -0
  113. data/lib/automation_object/state/blue_print_adapter/hook_actions/sleep.rb +18 -0
  114. data/lib/automation_object/state/blue_print_adapter/hook_actions/wait_for_elements.rb +20 -0
  115. data/lib/automation_object/state/blue_print_adapter/modal.rb +26 -0
  116. data/lib/automation_object/state/blue_print_adapter/screen.rb +32 -0
  117. data/lib/automation_object/state/blue_print_adapter/top.rb +45 -0
  118. data/lib/automation_object/state/error.rb +24 -0
  119. data/lib/automation_object/state/session.rb +38 -0
  120. data/lib/automation_object/step_definitions.rb +14 -0
  121. data/lib/automation_object/step_definitions/action.rb +21 -0
  122. data/lib/automation_object/step_definitions/cache.rb +23 -0
  123. data/lib/automation_object/step_definitions/element/actions.rb +87 -0
  124. data/lib/automation_object/step_definitions/element/regex.rb +24 -0
  125. data/lib/automation_object/step_definitions/element/steps.rb +67 -0
  126. data/lib/automation_object/step_definitions/parse.rb +39 -0
  127. data/lib/automation_object/version.rb +1 -1
  128. metadata +194 -110
  129. data/lib/automation_object/blue_print_validation/base_validation.rb +0 -44
  130. data/lib/automation_object/blue_print_validation/common_methods.rb +0 -106
  131. data/lib/automation_object/blue_print_validation/element_validation.rb +0 -198
  132. data/lib/automation_object/blue_print_validation/formatted_errors.rb +0 -41
  133. data/lib/automation_object/blue_print_validation/hook_validation.rb +0 -393
  134. data/lib/automation_object/blue_print_validation/key_value_constants.rb +0 -75
  135. data/lib/automation_object/blue_print_validation/modal_validation.rb +0 -37
  136. data/lib/automation_object/blue_print_validation/screen_modal_common_methods.rb +0 -119
  137. data/lib/automation_object/blue_print_validation/screen_validation.rb +0 -21
  138. data/lib/automation_object/blue_print_validation/validation_object.rb +0 -32
  139. data/lib/automation_object/driver/anonymous.rb +0 -27
  140. data/lib/automation_object/element/element.rb +0 -145
  141. data/lib/automation_object/element/element_array.rb +0 -12
  142. data/lib/automation_object/element/element_cell.rb +0 -126
  143. data/lib/automation_object/element/element_group.rb +0 -33
  144. data/lib/automation_object/element/element_hash.rb +0 -25
  145. data/lib/automation_object/element/element_helpers.rb +0 -29
  146. data/lib/automation_object/element/element_methods.rb +0 -134
  147. data/lib/automation_object/element/elements_helpers.rb +0 -204
  148. data/lib/automation_object/framework/events.rb +0 -8
  149. data/lib/automation_object/framework/helpers.rb +0 -101
  150. data/lib/automation_object/framework/print_objects.rb +0 -67
  151. data/lib/automation_object/framework/screen_monitor.rb +0 -55
  152. data/lib/automation_object/framework/screen_routing.rb +0 -310
  153. data/lib/automation_object/framework/window_helpers.rb +0 -181
  154. data/lib/automation_object/hash.rb +0 -6
  155. data/lib/automation_object/hook_helpers.rb +0 -27
  156. data/lib/automation_object/logger.rb +0 -179
  157. data/lib/automation_object/object.rb +0 -22
  158. data/lib/automation_object/screen/modal.rb +0 -8
  159. data/lib/automation_object/screen/screen.rb +0 -209
  160. data/lib/automation_object/screen/screen_hook_helpers.rb +0 -319
  161. data/lib/automation_object/screen/screen_modal_helpers.rb +0 -101
  162. data/lib/automation_object/screen/screen_prompt_helpers.rb +0 -21
  163. data/lib/automation_object/screen/screen_window_helpers.rb +0 -149
@@ -0,0 +1,26 @@
1
+ require_relative 'action_loop'
2
+
3
+ module AutomationObject
4
+ module State
5
+ module BluePrintAdapter
6
+ class ChangeScreen < ActionLoop
7
+ def initialize(args = {})
8
+ super
9
+ @new_screen_name = args.fetch :blue_prints
10
+ end
11
+
12
+ def single_run
13
+ self.driver.document_complete_wait
14
+
15
+ new_screen = self.composite.top.screens[@new_screen_name]
16
+ if new_screen.load.live?
17
+ self.composite.top.set_screen(@new_screen_name)
18
+ return true
19
+ else
20
+ return false
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'action_loop'
2
+
3
+ module AutomationObject
4
+ module State
5
+ module BluePrintAdapter
6
+ class ChangeToPreviousScreen < ActionLoop
7
+ def single_run
8
+ self.driver.document_complete_wait
9
+
10
+ new_screen = self.composite.top.current_window.previous_screen_name
11
+ if new_screen.load.live?
12
+ self.composite.top.set_screen(new_screen)
13
+ return true
14
+ else
15
+ return false
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,31 @@
1
+ require_relative 'action_loop'
2
+ require_relative '../modal'
3
+ require_relative '../../error'
4
+
5
+ module AutomationObject
6
+ module State
7
+ module BluePrintAdapter
8
+ class CloseModal < ActionLoop
9
+ def single_run
10
+ self.driver.document_complete_wait
11
+
12
+ unless self.composite.parent.is_a?(Modal)
13
+ raise ModalParentExpected.new
14
+ end
15
+
16
+ modal = self.composite.parent
17
+ modal.active = modal.live?
18
+
19
+ if !modal.active?
20
+ self.composite.screen.modal = nil
21
+ self.composite.screen.current_modal = nil
22
+ self.composite.top.destroy_modal()
23
+ return true
24
+ else
25
+ return false
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ require_relative 'action_loop'
2
+ require_relative '../../error'
3
+
4
+ module AutomationObject
5
+ module State
6
+ module BluePrintAdapter
7
+ class CloseScreen < ActionLoop
8
+ def single_run
9
+ unless self.composite.screen
10
+ raise ScreenParentExpected.new
11
+ end
12
+
13
+ screen_name = self.composite.screen.name
14
+ return self.composite.top.window_closed?(screen_name)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'action_loop'
2
+
3
+ module AutomationObject
4
+ module State
5
+ module BluePrintAdapter
6
+ class ElementRequirement < ActionLoop
7
+ def element
8
+ @element ||= self.driver.find_element(*self.blue_prints.element_blueprints.selector_params)
9
+ end
10
+
11
+ def single_run
12
+ self.blue_prints.hook_order.each { |requirement_name|
13
+ next if self.blue_prints.requirement(requirement_name) == nil
14
+
15
+ requirement_value = self.blue_prints.requirement(requirement_name)
16
+
17
+ case requirement_name
18
+ when :exists?
19
+ if requirement_value != self.driver.exists?(*self.blue_prints.element_blueprints.selector_params)
20
+ return false
21
+ end
22
+ else
23
+ if requirement_value != self.element.send(requirement_name)
24
+ return false
25
+ end
26
+ end
27
+ }
28
+
29
+ return true
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,37 @@
1
+ require_relative 'action_loop'
2
+ require_relative '../../error'
3
+
4
+ module AutomationObject
5
+ module State
6
+ module BluePrintAdapter
7
+ class NewScreen < ActionLoop
8
+ def initialize(args = {})
9
+ super
10
+ end
11
+
12
+ def single_run
13
+ new_screen_name = self.blue_prints
14
+ new_screen = self.composite.top.screens[new_screen_name]
15
+
16
+ stored_window_handles = self.composite.top.window_handles
17
+ driver_handles = self.driver.window_handles
18
+
19
+ if driver_handles.length <= stored_window_handles.length
20
+ return false
21
+ end
22
+
23
+ if (driver_handles.length - stored_window_handles.length) > 1
24
+ raise MoreThenOneScreenCreated.new
25
+ end
26
+
27
+ self.composite.top.create_screen(new_screen_name)
28
+ self.composite.top.use_screen(new_screen_name)
29
+
30
+ self.driver.document_complete_wait
31
+
32
+ return new_screen.load.live?
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'action_loop'
2
+
3
+ module AutomationObject
4
+ module State
5
+ module BluePrintAdapter
6
+ class PossibleScreenChanges < ActionLoop
7
+ def single_run
8
+ self.blue_prints.each { |possible_screen_name|
9
+ new_screen = self.composite.top.screens[possible_screen_name]
10
+ if possible_screen_name.load.live?
11
+ self.composite.top.set_screen(possible_screen_name)
12
+ return true
13
+ end
14
+ }
15
+
16
+ return false
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'action_loop'
2
+
3
+ module AutomationObject
4
+ module State
5
+ module BluePrintAdapter
6
+ class ResetScreen < ActionLoop
7
+ def single_run
8
+ unless self.composite.screen
9
+ raise ScreenParentExpected.new
10
+ end
11
+
12
+ screen_name = self.composite.screen.name
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ require_relative 'action_loop'
2
+
3
+ module AutomationObject
4
+ module State
5
+ module BluePrintAdapter
6
+ class ShowModal < ActionLoop
7
+ def initialize(args = {})
8
+ super
9
+ @new_modal_name = args.fetch :blue_prints
10
+ end
11
+
12
+ def single_run
13
+ new_modal = self.composite.screen.modals[@new_modal_name]
14
+
15
+ if new_modal.load.live? != false
16
+ self.composite.screen.current_modal = @new_modal_name
17
+ self.composite.screen.modal = new_modal
18
+ return true
19
+ else
20
+ return false
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'action_loop'
2
+
3
+ module AutomationObject
4
+ module State
5
+ module BluePrintAdapter
6
+ class Sleep < ActionLoop
7
+ def initialize(args = {})
8
+ super
9
+ @time = args.fetch :blue_prints
10
+ end
11
+
12
+ def single_run
13
+ sleep(@time)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'action_loop'
2
+
3
+ module AutomationObject
4
+ module State
5
+ module BluePrintAdapter
6
+ class WaitForElements < ActionLoop
7
+ def single_run
8
+ self.blue_prints.each { |hook_element_requirement|
9
+ hook_element_requirement = ElementRequirement.new(blue_prints: hook_element_requirement,
10
+ composite: self,
11
+ loops: 1)
12
+ return false unless hook_element_requirement.run
13
+ }
14
+
15
+ return true
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ require_relative 'composite'
2
+
3
+ require_relative 'element'
4
+ require_relative 'element_array'
5
+ require_relative 'element_hash'
6
+
7
+ module AutomationObject
8
+ module State
9
+ module BluePrintAdapter
10
+ #TODO: refactor to container
11
+ class Modal < AutomationObject::State::BluePrintAdapter::Composite
12
+ has_one :load, interface: Hook
13
+
14
+ has_many :elements, interface: Element
15
+ has_many :element_arrays, interface: ElementArray
16
+ has_many :element_hashes, interface: ElementHash
17
+
18
+ attr_accessor :active
19
+ # @return [Boolean] screen is active or not
20
+ def active
21
+ return @active ||= false
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,32 @@
1
+ require_relative 'composite'
2
+
3
+ require_relative 'modal'
4
+ require_relative 'hook'
5
+ require_relative 'element'
6
+ require_relative 'element_array'
7
+ require_relative 'element_hash'
8
+
9
+ module AutomationObject
10
+ module State
11
+ module BluePrintAdapter
12
+ class Screen < AutomationObject::State::BluePrintAdapter::Composite
13
+ attr_accessor :modal, :current_modal
14
+
15
+ has_one :load, interface: Hook
16
+
17
+ #Children for this composite
18
+ has_many :modals, interface: Modal
19
+
20
+ has_many :elements, interface: Element
21
+ has_many :element_arrays, interface: ElementArray
22
+ has_many :element_hashes, interface: ElementHash
23
+
24
+ attr_accessor :active
25
+ # @return [Boolean] screen is active or not
26
+ def active
27
+ return @active ||= false
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,45 @@
1
+ require_relative 'composite'
2
+ require_relative 'screen'
3
+
4
+ require_relative 'helpers/screen_manager'
5
+
6
+ require_relative '../error'
7
+
8
+ module AutomationObject
9
+ module State
10
+ module BluePrintAdapter
11
+ class Top < AutomationObject::State::BluePrintAdapter::Composite
12
+ include ScreenManager
13
+
14
+ #Children for this composite
15
+ has_many :screens, interface: Screen
16
+
17
+ # @return [Symbol] symbol of the initial screen found
18
+ def create
19
+ self.driver.get(self.blue_prints.base_url) if self.blue_prints.base_url
20
+ self.set_screen(self.initial_screen)
21
+ end
22
+
23
+ def initial_screen
24
+ #If default screen then check if its live and set it
25
+ if self.blue_prints.default_screen
26
+ screen_name = self.blue_prints.default_screen
27
+ default_screen_live = self.screens[screen_name].load.live?
28
+
29
+ if default_screen_live == nil or default_screen_live == true
30
+ return screen_name
31
+ else
32
+ raise AutomationObject::State::NoInitialScreenError.new
33
+ end
34
+ end
35
+
36
+ self.screens.each { |screen_name, screen|
37
+ return screen_name if screen.load.live?
38
+ }
39
+
40
+ raise AutomationObject::State::NoInitialScreenError.new
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,24 @@
1
+ module AutomationObject
2
+ module State
3
+ class UndefinedLoadTypeError < StandardError;
4
+ end
5
+
6
+ class NoInitialScreenError < StandardError
7
+ def initialize(message = 'No initial screen to be set to')
8
+ super
9
+ end
10
+ end
11
+
12
+ class ScreenNotActiveError < StandardError
13
+ def initialize(screen)
14
+ message = "#{screen} is not currently active"
15
+ super(message)
16
+ end
17
+ end
18
+
19
+ class ModalNotActiveError < StandardError; end
20
+ class ModalParentExpected < StandardError; end
21
+ class ScreenParentExpected < StandardError; end
22
+ class MoreThenOneScreenCreated < StandardError; end
23
+ end
24
+ end
@@ -0,0 +1,38 @@
1
+ require_relative 'error'
2
+
3
+ module AutomationObject
4
+ module State
5
+ #Store session details, methods for controlling viewing current driver session.
6
+ class Session
7
+ attr_accessor :driver, :composite
8
+
9
+ def initialize(args={})
10
+ self.driver = args.fetch :driver
11
+ self.composite = args.fetch :composite
12
+
13
+ self.composite.create
14
+ end
15
+
16
+ def load(type, name)
17
+ case type
18
+ when :screen
19
+ unless self.composite.screen_exists?(name)
20
+ raise AutomationObject::State::ScreenNotActiveError.new(name)
21
+ end
22
+
23
+ self.composite.use_screen(name)
24
+ when :modal
25
+ unless self.composite.screens[self.composite.current_screen].current_modal == name
26
+ raise AutomationObject::State::ModalNotActiveError.new(name)
27
+ end
28
+
29
+ self.composite.use_modal(name)
30
+ when :element, :element_array, :element_hash
31
+ return self.composite.get_object(type, name)
32
+ else
33
+ raise AutomationObject::State::UndefinedLoadTypeError.new
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end