automation_object 0.0.4 → 0.5.0
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.
- checksums.yaml +4 -4
- data/lib/automation_object.rb +14 -72
- data/lib/automation_object/blue_print.rb +37 -100
- data/lib/automation_object/blue_print/composite/automatic_onload_modal.rb +28 -0
- data/lib/automation_object/blue_print/composite/base.rb +18 -0
- data/lib/automation_object/blue_print/composite/custom_method.rb +23 -0
- data/lib/automation_object/blue_print/composite/element.rb +20 -0
- data/lib/automation_object/blue_print/composite/element_array.rb +21 -0
- data/lib/automation_object/blue_print/composite/element_hash.rb +26 -0
- data/lib/automation_object/blue_print/composite/helpers/element_helper.rb +33 -0
- data/lib/automation_object/blue_print/composite/helpers/multiple_elements_helper.rb +18 -0
- data/lib/automation_object/blue_print/composite/hook.rb +31 -0
- data/lib/automation_object/blue_print/composite/hook_action.rb +84 -0
- data/lib/automation_object/blue_print/composite/hook_element_requirements.rb +39 -0
- data/lib/automation_object/blue_print/composite/modal.rb +56 -0
- data/lib/automation_object/blue_print/composite/screen.rb +61 -0
- data/lib/automation_object/blue_print/composite/top.rb +51 -0
- data/lib/automation_object/blue_print/composite/view.rb +48 -0
- data/lib/automation_object/blue_print/hash_adapter.rb +17 -0
- data/lib/automation_object/blue_print/hash_adapter/automatic_onload_modal.rb +35 -0
- data/lib/automation_object/blue_print/hash_adapter/composite.rb +93 -0
- data/lib/automation_object/blue_print/hash_adapter/custom_method.rb +30 -0
- data/lib/automation_object/blue_print/hash_adapter/element.rb +34 -0
- data/lib/automation_object/blue_print/hash_adapter/element_array.rb +36 -0
- data/lib/automation_object/blue_print/hash_adapter/element_hash.rb +43 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/element_helper.rb +59 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/multiple_elements_helper.rb +35 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validation_error.rb +26 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validation_helper.rb +99 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate.rb +23 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_allowed_keys.rb +31 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_element_presence_of.rb +55 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_instance_of.rb +39 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_modal_presence_of.rb +54 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_presence_of.rb +36 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_screen_presence_of.rb +55 -0
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_view_presence_of.rb +52 -0
- data/lib/automation_object/blue_print/hash_adapter/hook.rb +35 -0
- data/lib/automation_object/blue_print/hash_adapter/hook_action.rb +134 -0
- data/lib/automation_object/blue_print/hash_adapter/hook_element_requirements.rb +64 -0
- data/lib/automation_object/blue_print/hash_adapter/modal.rb +52 -0
- data/lib/automation_object/blue_print/hash_adapter/screen.rb +91 -0
- data/lib/automation_object/blue_print/hash_adapter/top.rb +63 -0
- data/lib/automation_object/blue_print/hash_adapter/view.rb +29 -0
- data/lib/automation_object/blue_print/helpers/file_helper.rb +38 -0
- data/lib/automation_object/blue_print/yaml_adapter.rb +50 -0
- data/lib/automation_object/driver.rb +44 -0
- data/lib/automation_object/driver/appium_adapter/driver.rb +150 -0
- data/lib/automation_object/driver/appium_adapter/element.rb +118 -0
- data/lib/automation_object/driver/base.rb +11 -0
- data/lib/automation_object/driver/driver.rb +69 -245
- data/lib/automation_object/driver/element.rb +51 -210
- data/lib/automation_object/driver/helpers/selenium_driver_helper.rb +41 -0
- data/lib/automation_object/driver/helpers/selenium_element_helper.rb +138 -0
- data/lib/automation_object/driver/nokogiri_adapter/backup/driver.rb +83 -0
- data/lib/automation_object/driver/nokogiri_adapter/backup/element.rb +66 -0
- data/lib/automation_object/driver/nokogiri_adapter/backup/form.rb +29 -0
- data/lib/automation_object/driver/nokogiri_adapter/backup/helpers/driver_element_helper.rb +52 -0
- data/lib/automation_object/driver/nokogiri_adapter/backup/session.rb +115 -0
- data/lib/automation_object/driver/nokogiri_adapter/driver.rb +104 -0
- data/lib/automation_object/driver/nokogiri_adapter/element.rb +85 -0
- data/lib/automation_object/driver/nokogiri_adapter/error.rb +17 -0
- data/lib/automation_object/driver/selenium_adapter/driver.rb +143 -0
- data/lib/automation_object/driver/selenium_adapter/element.rb +116 -0
- data/lib/automation_object/dsl.rb +33 -0
- data/lib/automation_object/dsl/blue_print_adapter.rb +16 -0
- data/lib/automation_object/dsl/blue_print_adapter/composite.rb +54 -0
- data/lib/automation_object/dsl/blue_print_adapter/element.rb +14 -0
- data/lib/automation_object/dsl/blue_print_adapter/element_array.rb +14 -0
- data/lib/automation_object/dsl/blue_print_adapter/element_hash.rb +14 -0
- data/lib/automation_object/dsl/blue_print_adapter/modal.rb +23 -0
- data/lib/automation_object/dsl/blue_print_adapter/screen.rb +26 -0
- data/lib/automation_object/dsl/blue_print_adapter/top.rb +19 -0
- data/lib/automation_object/dsl/models.rb +18 -0
- data/lib/automation_object/dsl/proxies/element.rb +16 -0
- data/lib/automation_object/dsl/proxies/element_array.rb +16 -0
- data/lib/automation_object/dsl/proxies/element_hash.rb +16 -0
- data/lib/automation_object/dsl/proxies/helpers/composite_helper.rb +74 -0
- data/lib/automation_object/dsl/proxies/modal.rb +17 -0
- data/lib/automation_object/dsl/proxies/screen.rb +17 -0
- data/lib/automation_object/dsl/proxies/top.rb +17 -0
- data/lib/automation_object/framework.rb +79 -386
- data/lib/automation_object/helpers/composite.rb +95 -0
- data/lib/automation_object/helpers/composite_hook.rb +46 -0
- data/lib/automation_object/helpers/hash.rb +15 -0
- data/lib/automation_object/helpers/reflection_helper.rb +28 -0
- data/lib/automation_object/helpers/string.rb +27 -0
- data/lib/automation_object/proxies/mutex_proxy.rb +63 -0
- data/lib/automation_object/proxies/proxy.rb +20 -0
- data/lib/automation_object/proxies/throttle_proxy.rb +57 -0
- data/lib/automation_object/state.rb +37 -0
- data/lib/automation_object/state/blue_print_adapter.rb +16 -0
- data/lib/automation_object/state/blue_print_adapter/composite.rb +65 -0
- data/lib/automation_object/state/blue_print_adapter/element.rb +20 -0
- data/lib/automation_object/state/blue_print_adapter/element_array.rb +25 -0
- data/lib/automation_object/state/blue_print_adapter/element_hash.rb +31 -0
- data/lib/automation_object/state/blue_print_adapter/element_proxy.rb +28 -0
- data/lib/automation_object/state/blue_print_adapter/helpers/element_helper.rb +31 -0
- data/lib/automation_object/state/blue_print_adapter/helpers/screen_manager.rb +137 -0
- data/lib/automation_object/state/blue_print_adapter/helpers/window.rb +39 -0
- data/lib/automation_object/state/blue_print_adapter/hook.rb +56 -0
- data/lib/automation_object/state/blue_print_adapter/hook_action.rb +33 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/action_loop.rb +35 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/change_screen.rb +26 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/change_to_previous_screen.rb +21 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/close_modal.rb +31 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/close_screen.rb +19 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/element_requirement.rb +34 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/new_screen.rb +37 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/possible_screen_changes.rb +21 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/reset_screen.rb +18 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/show_modal.rb +26 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/sleep.rb +18 -0
- data/lib/automation_object/state/blue_print_adapter/hook_actions/wait_for_elements.rb +20 -0
- data/lib/automation_object/state/blue_print_adapter/modal.rb +26 -0
- data/lib/automation_object/state/blue_print_adapter/screen.rb +32 -0
- data/lib/automation_object/state/blue_print_adapter/top.rb +45 -0
- data/lib/automation_object/state/error.rb +24 -0
- data/lib/automation_object/state/session.rb +38 -0
- data/lib/automation_object/step_definitions.rb +14 -0
- data/lib/automation_object/step_definitions/action.rb +21 -0
- data/lib/automation_object/step_definitions/cache.rb +23 -0
- data/lib/automation_object/step_definitions/element/actions.rb +87 -0
- data/lib/automation_object/step_definitions/element/regex.rb +24 -0
- data/lib/automation_object/step_definitions/element/steps.rb +67 -0
- data/lib/automation_object/step_definitions/parse.rb +39 -0
- data/lib/automation_object/version.rb +1 -1
- metadata +194 -110
- data/lib/automation_object/blue_print_validation/base_validation.rb +0 -44
- data/lib/automation_object/blue_print_validation/common_methods.rb +0 -106
- data/lib/automation_object/blue_print_validation/element_validation.rb +0 -198
- data/lib/automation_object/blue_print_validation/formatted_errors.rb +0 -41
- data/lib/automation_object/blue_print_validation/hook_validation.rb +0 -393
- data/lib/automation_object/blue_print_validation/key_value_constants.rb +0 -75
- data/lib/automation_object/blue_print_validation/modal_validation.rb +0 -37
- data/lib/automation_object/blue_print_validation/screen_modal_common_methods.rb +0 -119
- data/lib/automation_object/blue_print_validation/screen_validation.rb +0 -21
- data/lib/automation_object/blue_print_validation/validation_object.rb +0 -32
- data/lib/automation_object/driver/anonymous.rb +0 -27
- data/lib/automation_object/element/element.rb +0 -145
- data/lib/automation_object/element/element_array.rb +0 -12
- data/lib/automation_object/element/element_cell.rb +0 -126
- data/lib/automation_object/element/element_group.rb +0 -33
- data/lib/automation_object/element/element_hash.rb +0 -25
- data/lib/automation_object/element/element_helpers.rb +0 -29
- data/lib/automation_object/element/element_methods.rb +0 -134
- data/lib/automation_object/element/elements_helpers.rb +0 -204
- data/lib/automation_object/framework/events.rb +0 -8
- data/lib/automation_object/framework/helpers.rb +0 -101
- data/lib/automation_object/framework/print_objects.rb +0 -67
- data/lib/automation_object/framework/screen_monitor.rb +0 -55
- data/lib/automation_object/framework/screen_routing.rb +0 -310
- data/lib/automation_object/framework/window_helpers.rb +0 -181
- data/lib/automation_object/hash.rb +0 -6
- data/lib/automation_object/hook_helpers.rb +0 -27
- data/lib/automation_object/logger.rb +0 -179
- data/lib/automation_object/object.rb +0 -22
- data/lib/automation_object/screen/modal.rb +0 -8
- data/lib/automation_object/screen/screen.rb +0 -209
- data/lib/automation_object/screen/screen_hook_helpers.rb +0 -319
- data/lib/automation_object/screen/screen_modal_helpers.rb +0 -101
- data/lib/automation_object/screen/screen_prompt_helpers.rb +0 -21
- data/lib/automation_object/screen/screen_window_helpers.rb +0 -149
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#Require parent class
|
|
2
|
+
require_relative 'base'
|
|
3
|
+
|
|
4
|
+
require_relative 'hook_action'
|
|
5
|
+
require_relative 'hook_element_requirements'
|
|
6
|
+
|
|
7
|
+
module AutomationObject
|
|
8
|
+
module BluePrint
|
|
9
|
+
module Composite
|
|
10
|
+
#Hook 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
|
|
13
|
+
class Hook < Base
|
|
14
|
+
# @return [HookAction]
|
|
15
|
+
def before
|
|
16
|
+
self.adapter.before
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @return [HookAction]
|
|
20
|
+
def after
|
|
21
|
+
self.adapter.after
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @return [Array<HookElementRequirements>] array of element requirements
|
|
25
|
+
def live?
|
|
26
|
+
self.adapter.live?
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#Require parent class
|
|
2
|
+
require_relative 'base'
|
|
3
|
+
|
|
4
|
+
require_relative 'hook_element_requirements'
|
|
5
|
+
|
|
6
|
+
module AutomationObject
|
|
7
|
+
module BluePrint
|
|
8
|
+
module Composite
|
|
9
|
+
#HookAction 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
|
|
12
|
+
class HookAction < Base
|
|
13
|
+
#Get the order to run the hook in
|
|
14
|
+
# @return [Array<Symbol>] list of hook methods to run in given order
|
|
15
|
+
def hook_order
|
|
16
|
+
self.adapter.hook_order
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
#Get length of hook actions
|
|
20
|
+
# @return [Integer] length of hook actions
|
|
21
|
+
def length
|
|
22
|
+
self.adapter.length
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
#See if hook actions are empty
|
|
26
|
+
# @return [Boolean] if hook actions are empty
|
|
27
|
+
def empty?
|
|
28
|
+
self.adapter.empty?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [Symbol, nil] screen to change to
|
|
32
|
+
def change_screen
|
|
33
|
+
self.adapter.change_screen
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @return [Symbol, nil] new screen
|
|
37
|
+
def new_screen
|
|
38
|
+
self.adapter.new_screen
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @return [Boolean]
|
|
42
|
+
def close_screen
|
|
43
|
+
self.adapter.close_screen
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @return [Boolean]
|
|
47
|
+
def close_modal
|
|
48
|
+
self.adapter.close_modal
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @return [Boolean]
|
|
52
|
+
def change_to_previous_screen
|
|
53
|
+
self.adapter.change_to_previous_screen
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# @return [Symbol, nil]
|
|
57
|
+
def show_modal
|
|
58
|
+
self.adapter.show_modal
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# @return [Array]
|
|
62
|
+
def possible_screen_changes
|
|
63
|
+
self.adapter.possible_screen_changes
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
#@return [Boolean] reset the screen?
|
|
67
|
+
def reset_screen
|
|
68
|
+
self.adapter.reset_screen
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
#@return [Numeric] amount of time to sleep
|
|
72
|
+
def sleep
|
|
73
|
+
self.adapter.sleep
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
#Custom method for array of children instead of Hash
|
|
77
|
+
# @return [Array<HookElementRequirements>] array of wait for element children
|
|
78
|
+
def wait_for_elements
|
|
79
|
+
self.adapter.wait_for_elements
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#Require parent class
|
|
2
|
+
require_relative 'base'
|
|
3
|
+
|
|
4
|
+
require_relative 'element'
|
|
5
|
+
|
|
6
|
+
module AutomationObject
|
|
7
|
+
module BluePrint
|
|
8
|
+
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
|
|
12
|
+
class HookElementRequirements < Base
|
|
13
|
+
#Get the order to run the hook in
|
|
14
|
+
# @return [Array<Symbol>] list of hook methods to run in given order
|
|
15
|
+
def hook_order
|
|
16
|
+
self.adapter.hook_order
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
#Get element requirement
|
|
20
|
+
# @param name [Symbol] name of requested requirement
|
|
21
|
+
def requirement(name)
|
|
22
|
+
self.adapter.requirement(name)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
#Get name of the element
|
|
26
|
+
# @return [Symbol] name of element
|
|
27
|
+
def element_name
|
|
28
|
+
self.adapter.element_name
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
#Convience for getting element blueprints
|
|
32
|
+
# @return [AutomationObject::BluePrint::Composite::Element]
|
|
33
|
+
def element_blueprints(composite_object = nil)
|
|
34
|
+
self.adapter.element_blueprints(composite_object)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#Require parent class
|
|
2
|
+
require_relative 'base'
|
|
3
|
+
|
|
4
|
+
require_relative 'automatic_onload_modal'
|
|
5
|
+
require_relative 'hook'
|
|
6
|
+
|
|
7
|
+
require_relative 'modal'
|
|
8
|
+
require_relative 'element'
|
|
9
|
+
require_relative 'element_array'
|
|
10
|
+
require_relative 'element_hash'
|
|
11
|
+
|
|
12
|
+
module AutomationObject
|
|
13
|
+
module BluePrint
|
|
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
|
|
18
|
+
class Modal < Base
|
|
19
|
+
# @return [Array<Symbol>]
|
|
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
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @return [Hook]
|
|
35
|
+
def load
|
|
36
|
+
self.adapter.load
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @return [Hash<Element>]
|
|
40
|
+
def elements
|
|
41
|
+
self.adapter.elements
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @return [Hash<ElementArray>]
|
|
45
|
+
def element_arrays
|
|
46
|
+
self.adapter.element_arrays
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @return [Hash<ElementHash>]
|
|
50
|
+
def element_hashes
|
|
51
|
+
self.adapter.element_hashes
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#Require parent class
|
|
2
|
+
require_relative 'base'
|
|
3
|
+
|
|
4
|
+
require_relative 'automatic_onload_modal'
|
|
5
|
+
require_relative 'hook'
|
|
6
|
+
|
|
7
|
+
require_relative 'modal'
|
|
8
|
+
require_relative 'element'
|
|
9
|
+
require_relative 'element_array'
|
|
10
|
+
require_relative 'element_hash'
|
|
11
|
+
|
|
12
|
+
module AutomationObject
|
|
13
|
+
module BluePrint
|
|
14
|
+
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
|
|
18
|
+
class Screen < Base
|
|
19
|
+
# @return [Array<Symbol>]
|
|
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
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @return [Hook]
|
|
35
|
+
def load
|
|
36
|
+
self.adapter.load
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @return [Hash<Modal>]
|
|
40
|
+
def modals
|
|
41
|
+
self.adapter.modals
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @return [Hash<Element>]
|
|
45
|
+
def elements
|
|
46
|
+
self.adapter.elements
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @return [Hash<ElementArray>]
|
|
50
|
+
def element_arrays
|
|
51
|
+
self.adapter.element_arrays
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @return [Hash<ElementHash>]
|
|
55
|
+
def element_hashes
|
|
56
|
+
self.adapter.element_hashes
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#Require parent class
|
|
2
|
+
require_relative 'base'
|
|
3
|
+
|
|
4
|
+
require_relative 'screen'
|
|
5
|
+
require_relative 'view'
|
|
6
|
+
|
|
7
|
+
module AutomationObject
|
|
8
|
+
module BluePrint
|
|
9
|
+
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
|
|
13
|
+
class Top < Base
|
|
14
|
+
# @return [Hash<Screen>]
|
|
15
|
+
def screens
|
|
16
|
+
self.adapter.screens
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @return [Hash<View>]
|
|
20
|
+
def views
|
|
21
|
+
self.adapter.views
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @return [String, nil] base url to navigate to upon framework creation
|
|
25
|
+
def base_url
|
|
26
|
+
self.adapter.base_url
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @return [Symbol, nil] default screen to be set when framework is created
|
|
30
|
+
def default_screen
|
|
31
|
+
self.adapter.default_screen
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @return [Numeric] sleep when transitioning screens
|
|
35
|
+
def screen_transition_sleep
|
|
36
|
+
self.adapter.screen_transition_sleep
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @return [Hash] driver methods to throttle
|
|
40
|
+
def throttle_driver_methods
|
|
41
|
+
self.adapter.throttle_driver_methods
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @return [Hash] element methods to throttle
|
|
45
|
+
def throttle_element_methods
|
|
46
|
+
self.adapter.throttle_element_methods
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#Require parent class
|
|
2
|
+
require_relative 'base'
|
|
3
|
+
|
|
4
|
+
module AutomationObject
|
|
5
|
+
module BluePrint
|
|
6
|
+
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
|
|
10
|
+
class View < Base
|
|
11
|
+
# @return [Array<AutomaticOnloadModal>]
|
|
12
|
+
def automatic_onload_modals
|
|
13
|
+
self.adapter.automatic_onload_modals
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @return [Array<Symbol>]
|
|
17
|
+
def automatic_screen_changes
|
|
18
|
+
self.adapter.automatic_screen_changes
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @return [Hook]
|
|
22
|
+
def load
|
|
23
|
+
self.adapter.load
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @return [Hash<Modal>]
|
|
27
|
+
def modals
|
|
28
|
+
self.adapter.modals
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [Hash<Element>]
|
|
32
|
+
def elements
|
|
33
|
+
self.adapter.elements
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @return [Hash<ElementArray>]
|
|
37
|
+
def element_arrays
|
|
38
|
+
self.adapter.element_arrays
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @return [Hash<ElementHash>]
|
|
42
|
+
def element_hashes
|
|
43
|
+
self.adapter.element_hashes
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require_relative 'composite/top'
|
|
2
|
+
require_relative 'hash_adapter/top'
|
|
3
|
+
|
|
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!
|
|
12
|
+
|
|
13
|
+
top_hash = AutomationObject::BluePrint::HashAdapter::Top.new(hash)
|
|
14
|
+
AutomationObject::BluePrint::Composite::Top.new(top_hash)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#Require parent class
|
|
2
|
+
require_relative 'composite'
|
|
3
|
+
|
|
4
|
+
module AutomationObject
|
|
5
|
+
module BluePrint
|
|
6
|
+
module HashAdapter
|
|
7
|
+
#Automatic Onload Modal Composite
|
|
8
|
+
class AutomaticOnloadModal < Composite
|
|
9
|
+
#Validations
|
|
10
|
+
validates :modal_name, instance_of: [String, Symbol], modal_presence_of: true, presence_of: true
|
|
11
|
+
validates :number_of_checks, instance_of: Numeric
|
|
12
|
+
validates :close, instance_of: TrueClass
|
|
13
|
+
|
|
14
|
+
def modal_name
|
|
15
|
+
modal_name = self.hash[:modal_name]
|
|
16
|
+
|
|
17
|
+
case modal_name
|
|
18
|
+
when Symbol, String
|
|
19
|
+
return modal_name.to_sym
|
|
20
|
+
else
|
|
21
|
+
return nil
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def number_of_checks
|
|
26
|
+
return self.hash[:number_of_checks] ||= 1
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def close
|
|
30
|
+
return self.hash[:close] ||= false
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
require_relative '../../helpers/composite'
|
|
2
|
+
|
|
3
|
+
require_relative 'helpers/validation_helper'
|
|
4
|
+
require_relative 'helpers/validation_error'
|
|
5
|
+
|
|
6
|
+
module AutomationObject
|
|
7
|
+
module BluePrint
|
|
8
|
+
module HashAdapter
|
|
9
|
+
class Composite < AutomationObject::Composite
|
|
10
|
+
include ValidationHelper
|
|
11
|
+
|
|
12
|
+
attr_accessor :hash
|
|
13
|
+
|
|
14
|
+
# @param hash [Hash] hash for the composite to build of off
|
|
15
|
+
# @param name [Symbol] name of composite element
|
|
16
|
+
# @param parent [Object, nil] parent composite object
|
|
17
|
+
# @param location [String] string location for error/debugging purposes
|
|
18
|
+
def initialize(hash = {}, name = :top, parent = nil, location = 'top')
|
|
19
|
+
#Add hash before calling super
|
|
20
|
+
self.hash = (hash.is_a?(Hash)) ? hash : {}
|
|
21
|
+
self.hash.symbolize_keys_deep!
|
|
22
|
+
|
|
23
|
+
super(name, parent, location)
|
|
24
|
+
|
|
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
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Overriding base get_child method
|
|
36
|
+
# @param name [Symbol] name of child
|
|
37
|
+
# @param options [Hash] options for child
|
|
38
|
+
def get_child(name, options)
|
|
39
|
+
child = (self.hash[name].is_a?(Hash)) ? self.hash[name] : Hash.new
|
|
40
|
+
child_location = self.location + "[#{name}]"
|
|
41
|
+
|
|
42
|
+
create_composite(options, child, name, child_location)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Overriding base get_children method
|
|
46
|
+
# @param name [Symbol] name of child
|
|
47
|
+
# @param options [Hash] options for child
|
|
48
|
+
# @return children [Hash] return children and names
|
|
49
|
+
def get_children(name, options)
|
|
50
|
+
children = self.hash[name]
|
|
51
|
+
children = (children.is_a?(Hash)) ? children : Hash.new
|
|
52
|
+
|
|
53
|
+
self.create_hash_children(children, options)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# @param name [Symbol] name of child
|
|
57
|
+
# @param children [Array] hash of children
|
|
58
|
+
# @param args [Hash] arguments for adding children
|
|
59
|
+
def create_array_children(name, children, args)
|
|
60
|
+
composite_children = children.map.with_index { |child, index|
|
|
61
|
+
location = (args[:location]) ? args[:location] : self.location
|
|
62
|
+
child_location = location + "[#{index}]"
|
|
63
|
+
|
|
64
|
+
create_composite(args, child, "#{name}[#{index}]", child_location)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return composite_children
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# @param children [Hash] hash of children
|
|
71
|
+
# @param args [Hash] arguments for adding children
|
|
72
|
+
def create_hash_children(children, args)
|
|
73
|
+
composite_children = children.inject({}) { |hash, (key, value)|
|
|
74
|
+
child_location = self.location + "[#{key}]"
|
|
75
|
+
|
|
76
|
+
hash[key] = create_composite(args, value, key, child_location)
|
|
77
|
+
hash
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return composite_children
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def create_composite(args, child, name, location)
|
|
84
|
+
#Get the Composite Class that corresponds with the HashAdapter Class
|
|
85
|
+
class_name = args[:interface].name.split('::').last
|
|
86
|
+
composite_class = AutomationObject::BluePrint::Composite.const_get(class_name)
|
|
87
|
+
|
|
88
|
+
composite_class.new(args[:interface].new(child, name, self, location))
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|