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.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c36cc7abfa4e9979ce44a0944d93226186e95322
4
- data.tar.gz: 3c7a3f82d088f77f7fc8decb354eeafa5694632d
3
+ metadata.gz: bac9e2b6a0367c100fc66c0541dbea6800308e28
4
+ data.tar.gz: 3b16e66a40739ac2cb865664daf3aaf7aebe97ba
5
5
  SHA512:
6
- metadata.gz: c2ece489fe81158e7aa27736e461042c8577180215b24cc0f01d0820e46e163b74b3a594dfb8b886fcdcede3426d84ea15ea7660826934d09311b33f7ae8bc68
7
- data.tar.gz: 3fbbfa38f5f69f88e21eac36987a9b83f030f769bf211412d97dad5501a3ce6e4e1d65f661fdf731c0242579736134c510fe22565df2830eb19bd7f6ebc5bfb3
6
+ metadata.gz: 7aeb3799b980a4d0f68b649c0441ddda946ee3a1cdb8049b711259cdb35cb025db681fa662b47f3e2908afa86015ceeecda8105fc4433975211a14f2a5714b35
7
+ data.tar.gz: 6d93962d0df0434dd34fb238bb7fa5c8ab10610df17aea9abeb128c3b221e5fce7611b38ee2f97e30ceb20f756abd5b796530e8e757fd2d46ae6a28463dabcb4
@@ -1,80 +1,22 @@
1
- require_relative 'automation_object/version'
2
-
3
- #Third-Party
4
- require 'event_emitter'
5
- require 'thread'
6
- require 'colorize'
1
+ #Gems
7
2
  require 'awesome_print'
8
- require 'yaml'
9
- require 'rspec'
10
- require 'rspec/expectations'
11
- require 'securerandom'
12
-
13
- #Convience methods
14
- require_relative 'automation_object/hash'
15
- require_relative 'automation_object/object'
16
- require_relative 'automation_object/logger'
17
-
18
- #Driver Object that has Mutex for keeping Thread Safe!
19
- require_relative 'automation_object/driver/anonymous'
20
- require_relative 'automation_object/driver/element'
21
- require_relative 'automation_object/driver/driver'
22
-
23
- #HookHelper Module
24
- require_relative 'automation_object/hook_helpers'
3
+ require 'ostruct'
4
+ require 'event_emitter'
5
+ require 'appium_lib'
6
+ require 'selenium-webdriver'
25
7
 
26
- #BluePrintValidation Module
27
- require_relative 'automation_object/blue_print_validation/key_value_constants'
28
- require_relative 'automation_object/blue_print_validation/formatted_errors'
29
- require_relative 'automation_object/blue_print_validation/common_methods'
30
- require_relative 'automation_object/blue_print_validation/base_validation'
31
- require_relative 'automation_object/blue_print_validation/screen_modal_common_methods'
32
- require_relative 'automation_object/blue_print_validation/screen_validation'
33
- require_relative 'automation_object/blue_print_validation/modal_validation'
34
- require_relative 'automation_object/blue_print_validation/element_validation'
35
- require_relative 'automation_object/blue_print_validation/hook_validation'
36
- require_relative 'automation_object/blue_print_validation/validation_object'
8
+ #Local Files
9
+ require_relative 'automation_object/version'
37
10
 
38
- #BluePrint
39
- require_relative 'automation_object/blue_print'
11
+ #Class method additions
12
+ require_relative 'automation_object/helpers/string'
13
+ require_relative 'automation_object/helpers/hash'
40
14
 
41
- #Framework Object
42
- require_relative 'automation_object/framework/helpers'
43
- require_relative 'automation_object/framework/window_helpers'
44
- require_relative 'automation_object/framework/print_objects'
45
- require_relative 'automation_object/framework/screen_routing'
46
- require_relative 'automation_object/framework/screen_monitor'
47
- require_relative 'automation_object/framework/events'
15
+ #Core Framework
48
16
  require_relative 'automation_object/framework'
49
17
 
50
- #Screen/Modal Objects
51
- require_relative 'automation_object/screen/screen_window_helpers'
52
- require_relative 'automation_object/screen/screen_hook_helpers'
53
- require_relative 'automation_object/screen/screen_prompt_helpers'
54
- require_relative 'automation_object/screen/screen_modal_helpers'
55
- require_relative 'automation_object/screen/screen'
56
- require_relative 'automation_object/screen/modal'
57
-
58
- #Element/ElementHash/ElementArray Objects
59
- require_relative 'automation_object/element/element_helpers'
60
- require_relative 'automation_object/element/elements_helpers'
61
- require_relative 'automation_object/element/element_methods'
62
- require_relative 'automation_object/element/element'
63
- require_relative 'automation_object/element/element_array'
64
- require_relative 'automation_object/element/element_hash'
65
-
66
- #ElementGroup
67
- require_relative 'automation_object/element/element_group'
68
- require_relative 'automation_object/element/element_cell'
18
+ #Cucumber Step Definitions
19
+ require_relative 'automation_object/step_definitions'
69
20
 
70
21
  module AutomationObject
71
- @@debug_mode = false
72
-
73
- def self.debug_mode
74
- @@debug_mode
75
- end
76
-
77
- def self.debug_mode=(value)
78
- @@debug_mode = value
79
- end
80
- end
22
+ end
@@ -1,106 +1,43 @@
1
- module AutomationObject
2
- class BluePrint < Hash
3
- #Static
4
- @@max_folder_depth = 10
5
- @@base_directory = nil
6
- @@validate_blueprint = false
7
-
8
- def self.max_folder_depth
9
- @@max_folder_depth
10
- end
11
-
12
- def self.max_folder_depth=(value)
13
- @@max_folder_depth = value
14
- end
15
-
16
- def self.base_directory
17
- @@base_directory
18
- end
19
-
20
- def self.base_directory=(value)
21
- @@base_directory = value
22
- end
23
-
24
- def self.validate_blueprint
25
- @@validate_blueprint
26
- end
27
-
28
- def self.validate_blueprint=(value)
29
- @@validate_blueprint = value
30
- end
31
-
32
- #Instance
33
- def initialize(path)
34
- full_path = path
35
- full_path = File.join(@@base_directory, path) if @@base_directory
36
-
37
- unless File.directory?(full_path)
38
- raise ArgumentError, "Blue prints directory doesn't exist: #{full_path}"
39
- end
40
-
41
- @configuration = Hash.new
42
- self.merge_directory(full_path)
43
-
44
- if @@validate_blueprint
45
- BluePrintValidation::ValidationObject.new(self)
46
- end
1
+ require_relative 'blue_print/hash_adapter'
2
+ require_relative 'blue_print/yaml_adapter'
47
3
 
48
- self.merge_views
49
- end
50
-
51
- def merge_directory(path, depth = 0)
52
- raise ArgumentError, "Folder depth breached max depth of #{@@max_folder_depth}" if depth > @@max_folder_depth
53
-
54
- unless File.directory?(path)
55
- raise ArgumentError, "Blue print path doesn't exist: #{path}"
56
- end
57
-
58
- Dir.foreach(path) do |item|
59
- next if item == '.' or item == '..'
60
- next if item[0] == '.'
61
-
62
- file_path = File.join(path, "#{item}")
63
- if File.directory?(file_path)
64
- depth = depth + 1
65
- self.merge_directory("#{path}/#{item}", depth) #call this method again for the subdirectory
66
- next
67
- end
68
-
69
- next unless self.is_yaml_file?(file_path)
70
-
71
- file_configuration = YAML.load_file(file_path)
72
- @configuration = @configuration.deep_merge(file_configuration) if file_configuration.class == Hash
4
+ module AutomationObject
5
+ #BluePrint Port, encapsulation of code required to parse and build composite data structure representing UI
6
+ #Provides for loading Hash/YAML, validates the resulting structure (throws errors), and a common
7
+ #interface for the rest of the code base to use.
8
+ module BluePrint
9
+ extend self
10
+
11
+ # Get method for BluePrint adapter const for composite BluePrint build
12
+ # Each adapter will implement common BluePrint interface
13
+ # @return [AutomationObject::BluePrint::YamlAdapter, AutomationObject::BluePrint::HashAdapter]
14
+ def adapter
15
+ return @adapter if @adapter
16
+ self.adapter = :hash
17
+ @adapter
18
+ end
19
+
20
+ # Sets adapter const will append _adapter if needed
21
+ # @param adapter_name [String] name of adapter wanted for composite creation
22
+ def adapter=(adapter_name)
23
+ adapter_name = adapter_name.to_s
24
+ adapter_name << '_adapter' unless adapter_name.match(/_adapter$/)
25
+ adapter_const = adapter_name.pascalize
26
+
27
+ @adapter = AutomationObject::BluePrint.const_get("#{adapter_const}")
28
+ end
29
+
30
+ # Adapters use the composite AutomationObject::BluePrint::Composite interfaces
31
+ # @return [AutomationObject::BluePrint::Composite::Top]
32
+ def new(blueprint_arg)
33
+ case blueprint_arg
34
+ when String
35
+ self.adapter = :yaml
36
+ when Hash
37
+ self.adapter = :hash
73
38
  end
74
39
 
75
- @configuration.each { |key, value|
76
- self[key] = value
77
- }
78
- end
79
-
80
- def is_yaml_file?(file_path)
81
- return (file_path.match(/\.ya?ml$/)) ? true : false
82
- end
83
-
84
- def merge_views
85
- return unless self['screens'].is_a?(Hash)
86
- return unless self['views'].is_a?(Hash)
87
-
88
- self['screens'].each { |screen_name, screen_configuration|
89
- next unless screen_configuration.is_a?(Hash)
90
- next unless screen_configuration['included_views'].is_a?(Array)
91
-
92
- screen_configuration['elements'] = Hash.new unless screen_configuration['elements'].class == Hash
93
-
94
- screen_configuration['included_views'].each { |view|
95
- next unless self['views'][view].is_a?(Hash)
96
- self['views'][view]['elements'] = Hash.new unless self['views'][view]['elements'].is_a?(Hash)
97
- screen_configuration = screen_configuration.deep_merge(self['views'][view])
98
- }
99
-
100
- self['screens'][screen_name] = screen_configuration
101
- }
102
-
103
- self.delete('views')
40
+ adapter.build(blueprint_arg)
104
41
  end
105
42
  end
106
43
  end
@@ -0,0 +1,28 @@
1
+ #Require parent class
2
+ require_relative 'base'
3
+
4
+ module AutomationObject
5
+ module BluePrint
6
+ module Composite
7
+ #AutomaticOnloadModal 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 AutomaticOnloadModal < Base
11
+ # @return [Symbol, nil]
12
+ def modal_name
13
+ self.adapter.modal_name
14
+ end
15
+
16
+ # @return [Integer]
17
+ def number_of_checks
18
+ self.adapter.number_of_checks
19
+ end
20
+
21
+ # @return [Boolean]
22
+ def close
23
+ self.adapter.close
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../../../lib/automation_object/helpers/composite'
2
+
3
+ module AutomationObject
4
+ module BluePrint
5
+ module Composite
6
+ #This composite namespace is the interface contract for the rest of the application to rely on
7
+ #Adapters should implement the same classes and methods as the composite to achieve reliability
8
+ #with the rest of the application
9
+ class Base
10
+ attr_accessor :adapter
11
+
12
+ def initialize(adapter_object)
13
+ self.adapter = adapter_object
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,23 @@
1
+ #Require parent class
2
+ require_relative 'base'
3
+
4
+ module AutomationObject
5
+ module BluePrint
6
+ module Composite
7
+ #CustomMethod 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 CustomMethod < Base
11
+ # @return [Symbol, nil]
12
+ def element_method
13
+ self.adapter.element_method
14
+ end
15
+
16
+ # @return [String, nil]
17
+ def evaluate
18
+ self.adapter.evaluate
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ #Require parent class
2
+ require_relative 'base'
3
+
4
+ require_relative 'hook'
5
+ require_relative 'custom_method'
6
+
7
+ require_relative 'helpers/element_helper'
8
+
9
+ module AutomationObject
10
+ module BluePrint
11
+ module Composite
12
+ #Element composite class, passing method to adapter only
13
+ #Hoping to improve code completion and standard interface where
14
+ #classes use this as a template to add additional adapters
15
+ class Element < Base
16
+ include ElementHelper
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ #Require parent class
2
+ require_relative 'base'
3
+
4
+ require_relative 'hook'
5
+
6
+ require_relative 'helpers/element_helper'
7
+ require_relative 'helpers/multiple_elements_helper'
8
+
9
+ module AutomationObject
10
+ module BluePrint
11
+ module Composite
12
+ #ElementArray composite class, passing method to adapter only
13
+ #Hoping to improve code completion and standard interface where
14
+ #classes use this as a template to add additional adapters
15
+ class ElementArray < Base
16
+ include ElementHelper
17
+ include MultipleElementsHelper
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ #Require parent class
2
+ require_relative 'base'
3
+
4
+ require_relative 'hook'
5
+
6
+ require_relative 'helpers/element_helper'
7
+ require_relative 'helpers/multiple_elements_helper'
8
+
9
+ module AutomationObject
10
+ module BluePrint
11
+ module Composite
12
+ #ElementHash composite class, passing method to adapter only
13
+ #Hoping to improve code completion and standard interface where
14
+ #classes use this as a template to add additional adapters
15
+ class ElementHash < Base
16
+ include ElementHelper
17
+ include MultipleElementsHelper
18
+
19
+ # @return [Symbol] element method to define element keys by
20
+ def define_elements_by
21
+ return self.adapter.define_elements_by
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ module AutomationObject
2
+ module BluePrint
3
+ module Composite
4
+ #Helper module for Element composite classes
5
+ module ElementHelper
6
+ # @return [Array<Symbol, String>, nil] params as an array for driver find_element args
7
+ def selector_params
8
+ self.adapter.selector_params
9
+ end
10
+
11
+ # @return [Symbol, nil] element name of iframe element is in or nil if not
12
+ def in_iframe
13
+ self.adapter.in_iframe
14
+ end
15
+
16
+ # @return [Boolean] whether or not element is in iframe
17
+ def in_iframe?
18
+ self.adapter.in_iframe?
19
+ end
20
+
21
+ def method_hook?(name)
22
+ self.adapter.method_hook?(name)
23
+ end
24
+
25
+ # @return [Hash<Hook>] array of Hook that are defined under the element
26
+ def method_hooks
27
+ self.adapter.method_hooks
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
@@ -0,0 +1,18 @@
1
+ module AutomationObject
2
+ module BluePrint
3
+ module Composite
4
+ #Helper module for multiple element composite classes
5
+ module MultipleElementsHelper
6
+ # @return [Range, nil] gives range for limiting multiple elements or nil
7
+ def custom_range
8
+ self.adapter.custom_range
9
+ end
10
+
11
+ # @return [Symbol, nil] gives element method to remove duplicates on or nil
12
+ def remove_duplicates
13
+ self.adapter.remove_duplicates
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end