automation_object 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/automation_object.rb +22 -11
- data/lib/automation_object/blue_print.rb +13 -12
- data/lib/automation_object/blue_print/composite/automatic_onload_modal.rb +9 -8
- data/lib/automation_object/blue_print/composite/base.rb +5 -4
- data/lib/automation_object/blue_print/composite/custom_method.rb +8 -7
- data/lib/automation_object/blue_print/composite/element.rb +6 -5
- data/lib/automation_object/blue_print/composite/element_array.rb +6 -5
- data/lib/automation_object/blue_print/composite/element_hash.rb +7 -6
- data/lib/automation_object/blue_print/composite/helpers/element_helper.rb +7 -7
- data/lib/automation_object/blue_print/composite/helpers/multiple_elements_helper.rb +5 -4
- data/lib/automation_object/blue_print/composite/hook.rb +9 -11
- data/lib/automation_object/blue_print/composite/hook_action.rb +25 -24
- data/lib/automation_object/blue_print/composite/hook_element_requirements.rb +14 -13
- data/lib/automation_object/blue_print/composite/modal.rb +11 -21
- data/lib/automation_object/blue_print/composite/screen.rb +22 -16
- data/lib/automation_object/blue_print/composite/top.rb +13 -12
- data/lib/automation_object/blue_print/composite/view.rb +27 -16
- data/lib/automation_object/blue_print/hash_adapter.rb +15 -11
- data/lib/automation_object/blue_print/hash_adapter/automatic_onload_modal.rb +12 -11
- data/lib/automation_object/blue_print/hash_adapter/composite.rb +28 -25
- data/lib/automation_object/blue_print/hash_adapter/custom_method.rb +11 -10
- data/lib/automation_object/blue_print/hash_adapter/element.rb +10 -9
- data/lib/automation_object/blue_print/hash_adapter/element_array.rb +10 -9
- data/lib/automation_object/blue_print/hash_adapter/element_hash.rb +11 -10
- data/lib/automation_object/blue_print/hash_adapter/helpers/element_helper.rb +20 -25
- data/lib/automation_object/blue_print/hash_adapter/helpers/multiple_elements_helper.rb +15 -14
- data/lib/automation_object/blue_print/hash_adapter/helpers/validation_error.rb +9 -8
- data/lib/automation_object/blue_print/hash_adapter/helpers/validation_helper.rb +19 -24
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate.rb +8 -5
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_allowed_keys.rb +7 -8
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_element_presence_of.rb +28 -23
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_instance_of.rb +12 -13
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_modal_presence_of.rb +27 -23
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_presence_of.rb +9 -8
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_screen_presence_of.rb +27 -23
- data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_view_presence_of.rb +25 -21
- data/lib/automation_object/blue_print/hash_adapter/hook.rb +14 -11
- data/lib/automation_object/blue_print/hash_adapter/hook_action.rb +45 -47
- data/lib/automation_object/blue_print/hash_adapter/hook_element_requirements.rb +24 -28
- data/lib/automation_object/blue_print/hash_adapter/modal.rb +14 -13
- data/lib/automation_object/blue_print/hash_adapter/screen.rb +23 -22
- data/lib/automation_object/blue_print/hash_adapter/top.rb +16 -15
- data/lib/automation_object/blue_print/hash_adapter/view.rb +58 -4
- data/lib/automation_object/blue_print/yaml_adapter.rb +33 -34
- data/lib/automation_object/driver.rb +15 -13
- data/lib/automation_object/driver/appium_adapter/driver.rb +47 -46
- data/lib/automation_object/driver/appium_adapter/element.rb +29 -96
- data/lib/automation_object/driver/base.rb +4 -2
- data/lib/automation_object/driver/common_selenium/driver.rb +60 -0
- data/lib/automation_object/driver/common_selenium/element.rb +107 -0
- data/lib/automation_object/driver/common_selenium/element_geometry.rb +86 -0
- data/lib/automation_object/driver/driver.rb +60 -30
- data/lib/automation_object/driver/element.rb +70 -15
- data/lib/automation_object/driver/nokogiri_adapter/driver.rb +88 -34
- data/lib/automation_object/driver/nokogiri_adapter/element.rb +94 -16
- data/lib/automation_object/driver/nokogiri_adapter/error.rb +29 -8
- data/lib/automation_object/driver/nokogiri_adapter/{backup/form.rb → form.rb} +19 -6
- data/lib/automation_object/driver/nokogiri_adapter/request.rb +17 -0
- data/lib/automation_object/driver/nokogiri_adapter/session.rb +94 -0
- data/lib/automation_object/driver/nokogiri_adapter/window.rb +86 -0
- data/lib/automation_object/driver/selenium_adapter/driver.rb +36 -45
- data/lib/automation_object/driver/selenium_adapter/element.rb +15 -85
- data/lib/automation_object/dsl.rb +11 -28
- data/lib/automation_object/dsl/_base.rb +70 -0
- data/lib/automation_object/dsl/_proxy.rb +24 -0
- data/lib/automation_object/dsl/element.rb +34 -0
- data/lib/automation_object/dsl/element_array.rb +34 -0
- data/lib/automation_object/dsl/element_hash.rb +34 -0
- data/lib/automation_object/dsl/modal.rb +43 -0
- data/lib/automation_object/dsl/screen.rb +45 -0
- data/lib/automation_object/dsl/top.rb +25 -0
- data/lib/automation_object/framework.rb +28 -38
- data/lib/automation_object/helpers/composite.rb +30 -27
- data/lib/automation_object/helpers/composite_hook.rb +16 -15
- data/lib/automation_object/{blue_print/helpers/file_helper.rb → helpers/file.rb} +12 -12
- data/lib/automation_object/helpers/hash.rb +6 -5
- data/lib/automation_object/helpers/kernel.rb +11 -0
- data/lib/automation_object/helpers/{reflection_helper.rb → reflection.rb} +9 -8
- data/lib/automation_object/helpers/string.rb +25 -15
- data/lib/automation_object/{proxies → proxy}/mutex_proxy.rb +18 -21
- data/lib/automation_object/proxy/proxy.rb +23 -0
- data/lib/automation_object/proxy/throttle_proxy.rb +52 -0
- data/lib/automation_object/state.rb +11 -29
- data/lib/automation_object/state/{blue_print_adapter/composite.rb → composite/_base.rb} +35 -25
- data/lib/automation_object/state/{blue_print_adapter/helpers/element_helper.rb → composite/_common_element.rb} +11 -11
- data/lib/automation_object/state/composite/element.rb +22 -0
- data/lib/automation_object/state/composite/element_array.rb +27 -0
- data/lib/automation_object/state/composite/element_hash.rb +33 -0
- data/lib/automation_object/state/composite/element_proxy.rb +33 -0
- data/lib/automation_object/state/composite/helpers/window.rb +61 -0
- data/lib/automation_object/state/composite/helpers/window_manager.rb +60 -0
- data/lib/automation_object/state/composite/hook.rb +56 -0
- data/lib/automation_object/state/{blue_print_adapter → composite}/hook_action.rb +10 -8
- data/lib/automation_object/state/composite/hook_actions/action_loop.rb +36 -0
- data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/change_screen.rb +7 -5
- data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/change_to_previous_screen.rb +7 -5
- data/lib/automation_object/state/composite/hook_actions/close_modal.rb +29 -0
- data/lib/automation_object/state/composite/hook_actions/close_screen.rb +19 -0
- data/lib/automation_object/state/composite/hook_actions/element_requirement.rb +32 -0
- data/lib/automation_object/state/composite/hook_actions/new_screen.rb +35 -0
- data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/possible_screen_changes.rb +8 -7
- data/lib/automation_object/state/composite/hook_actions/reset_screen.rb +14 -0
- data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/show_modal.rb +7 -5
- data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/sleep.rb +4 -2
- data/lib/automation_object/state/{blue_print_adapter → composite}/hook_actions/wait_for_elements.rb +7 -5
- data/lib/automation_object/state/composite/modal.rb +45 -0
- data/lib/automation_object/state/composite/screen.rb +58 -0
- data/lib/automation_object/state/composite/top.rb +51 -0
- data/lib/automation_object/state/error.rb +45 -6
- data/lib/automation_object/state/session.rb +25 -23
- data/lib/automation_object/step_definitions.rb +5 -3
- data/lib/automation_object/step_definitions/element.rb +77 -0
- data/lib/automation_object/step_definitions/element_array.rb +135 -0
- data/lib/automation_object/step_definitions/element_hash.rb +126 -0
- data/lib/automation_object/step_definitions/screen.rb +62 -0
- data/lib/automation_object/step_definitions/{cache.rb → support/cache.rb} +8 -6
- data/lib/automation_object/step_definitions/support/element_array.rb +40 -0
- data/lib/automation_object/step_definitions/support/element_hash.rb +41 -0
- data/lib/automation_object/step_definitions/{parse.rb → support/parse.rb} +8 -6
- data/lib/automation_object/version.rb +2 -1
- metadata +203 -103
- data/lib/automation_object/driver/helpers/selenium_driver_helper.rb +0 -41
- data/lib/automation_object/driver/helpers/selenium_element_helper.rb +0 -138
- data/lib/automation_object/driver/nokogiri_adapter/backup/driver.rb +0 -83
- data/lib/automation_object/driver/nokogiri_adapter/backup/element.rb +0 -66
- data/lib/automation_object/driver/nokogiri_adapter/backup/helpers/driver_element_helper.rb +0 -52
- data/lib/automation_object/driver/nokogiri_adapter/backup/session.rb +0 -115
- data/lib/automation_object/dsl/blue_print_adapter.rb +0 -16
- data/lib/automation_object/dsl/blue_print_adapter/composite.rb +0 -54
- data/lib/automation_object/dsl/blue_print_adapter/element.rb +0 -14
- data/lib/automation_object/dsl/blue_print_adapter/element_array.rb +0 -14
- data/lib/automation_object/dsl/blue_print_adapter/element_hash.rb +0 -14
- data/lib/automation_object/dsl/blue_print_adapter/modal.rb +0 -23
- data/lib/automation_object/dsl/blue_print_adapter/screen.rb +0 -26
- data/lib/automation_object/dsl/blue_print_adapter/top.rb +0 -19
- data/lib/automation_object/dsl/models.rb +0 -18
- data/lib/automation_object/dsl/proxies/element.rb +0 -16
- data/lib/automation_object/dsl/proxies/element_array.rb +0 -16
- data/lib/automation_object/dsl/proxies/element_hash.rb +0 -16
- data/lib/automation_object/dsl/proxies/helpers/composite_helper.rb +0 -74
- data/lib/automation_object/dsl/proxies/modal.rb +0 -17
- data/lib/automation_object/dsl/proxies/screen.rb +0 -17
- data/lib/automation_object/dsl/proxies/top.rb +0 -17
- data/lib/automation_object/proxies/proxy.rb +0 -20
- data/lib/automation_object/proxies/throttle_proxy.rb +0 -57
- data/lib/automation_object/state/blue_print_adapter.rb +0 -16
- data/lib/automation_object/state/blue_print_adapter/element.rb +0 -20
- data/lib/automation_object/state/blue_print_adapter/element_array.rb +0 -25
- data/lib/automation_object/state/blue_print_adapter/element_hash.rb +0 -31
- data/lib/automation_object/state/blue_print_adapter/element_proxy.rb +0 -28
- data/lib/automation_object/state/blue_print_adapter/helpers/screen_manager.rb +0 -137
- data/lib/automation_object/state/blue_print_adapter/helpers/window.rb +0 -39
- data/lib/automation_object/state/blue_print_adapter/hook.rb +0 -56
- data/lib/automation_object/state/blue_print_adapter/hook_actions/action_loop.rb +0 -35
- data/lib/automation_object/state/blue_print_adapter/hook_actions/close_modal.rb +0 -31
- data/lib/automation_object/state/blue_print_adapter/hook_actions/close_screen.rb +0 -19
- data/lib/automation_object/state/blue_print_adapter/hook_actions/element_requirement.rb +0 -34
- data/lib/automation_object/state/blue_print_adapter/hook_actions/new_screen.rb +0 -37
- data/lib/automation_object/state/blue_print_adapter/hook_actions/reset_screen.rb +0 -18
- data/lib/automation_object/state/blue_print_adapter/modal.rb +0 -26
- data/lib/automation_object/state/blue_print_adapter/screen.rb +0 -32
- data/lib/automation_object/state/blue_print_adapter/top.rb +0 -45
- data/lib/automation_object/step_definitions/action.rb +0 -21
- data/lib/automation_object/step_definitions/element/actions.rb +0 -87
- data/lib/automation_object/step_definitions/element/regex.rb +0 -24
- data/lib/automation_object/step_definitions/element/steps.rb +0 -67
@@ -1,80 +1,17 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '../common_selenium/element'
|
2
3
|
|
3
4
|
module AutomationObject
|
4
5
|
module Driver
|
5
6
|
module SeleniumAdapter
|
6
|
-
#Element proxy for Selenium
|
7
|
-
#Conform Selenium element interface to what's expected of the Driver Port
|
8
|
-
class Element < AutomationObject::
|
9
|
-
include AutomationObject::Driver::
|
7
|
+
# Element proxy for Selenium
|
8
|
+
# Conform Selenium element interface to what's expected of the Driver Port
|
9
|
+
class Element < AutomationObject::Proxy::Proxy
|
10
|
+
include AutomationObject::Driver::CommonSelenium::Element
|
10
11
|
|
11
|
-
def initialize(
|
12
|
-
@driver =
|
13
|
-
@subject =
|
14
|
-
end
|
15
|
-
|
16
|
-
# Set or Get attribute
|
17
|
-
# @param key [String] key of element
|
18
|
-
# @param value [String, nil] set value or leave blank
|
19
|
-
# @return [String, nil]
|
20
|
-
def attribute(key, value = nil)
|
21
|
-
@subject.attribute(key, value)
|
22
|
-
end
|
23
|
-
|
24
|
-
# @return [String] id of element
|
25
|
-
def id
|
26
|
-
@subject.id
|
27
|
-
end
|
28
|
-
|
29
|
-
# @return [String] href of element
|
30
|
-
def href
|
31
|
-
@subject.attribute('href')
|
32
|
-
end
|
33
|
-
|
34
|
-
# Text of element
|
35
|
-
# @return [String, nil]
|
36
|
-
def text
|
37
|
-
@subject.text
|
38
|
-
end
|
39
|
-
|
40
|
-
# Type into an element
|
41
|
-
# @return [void]
|
42
|
-
def send_keys(string)
|
43
|
-
@subject.send_keys(string)
|
44
|
-
end
|
45
|
-
|
46
|
-
# Clear the element field
|
47
|
-
# @return [void]
|
48
|
-
def clear
|
49
|
-
@subject.clear
|
50
|
-
end
|
51
|
-
|
52
|
-
# @return [Boolean]
|
53
|
-
def visible?
|
54
|
-
@subject.displayed?
|
55
|
-
end
|
56
|
-
|
57
|
-
# @return [Boolean]
|
58
|
-
def invisible?
|
59
|
-
!@subject.displayed?
|
60
|
-
end
|
61
|
-
|
62
|
-
# Get the location
|
63
|
-
# @return [Point]
|
64
|
-
def location
|
65
|
-
@subject.location
|
66
|
-
end
|
67
|
-
|
68
|
-
# Get the size of an element
|
69
|
-
# @return [Dimension]
|
70
|
-
def size
|
71
|
-
@subject.size
|
72
|
-
end
|
73
|
-
|
74
|
-
# Perform a submit action on an element
|
75
|
-
# @return [void]
|
76
|
-
def submit
|
77
|
-
@subject.submit
|
12
|
+
def initialize(driver, element)
|
13
|
+
@driver = driver
|
14
|
+
@subject = element
|
78
15
|
end
|
79
16
|
|
80
17
|
# Scroll the element into view
|
@@ -82,35 +19,28 @@ module AutomationObject
|
|
82
19
|
def scroll_into_view
|
83
20
|
@subject.location_once_scrolled_into_view
|
84
21
|
|
85
|
-
element_location =
|
22
|
+
element_location = location
|
86
23
|
scroll_position = @driver.scroll_position
|
87
24
|
|
88
|
-
middle_y_bounds = scroll_position[:y] + @driver.inner_window_height/2
|
25
|
+
middle_y_bounds = scroll_position[:y] + @driver.inner_window_height / 2
|
89
26
|
|
90
27
|
if middle_y_bounds > element_location.y
|
91
|
-
#Add
|
28
|
+
# Add
|
92
29
|
y_difference = middle_y_bounds - element_location.y
|
93
30
|
scroll_y_position = scroll_position[:y] - y_difference
|
94
31
|
else
|
95
|
-
#Subtract
|
32
|
+
# Subtract
|
96
33
|
y_difference = element_location.y - middle_y_bounds
|
97
34
|
scroll_y_position = scroll_position[:y] + y_difference
|
98
35
|
end
|
99
36
|
|
100
|
-
#Get the element to halfway
|
37
|
+
# Get the element to halfway
|
101
38
|
scroll_x_position = element_location.x.to_f
|
102
39
|
|
103
40
|
javascript_string = "return window.scroll(#{scroll_x_position}, #{scroll_y_position});"
|
104
41
|
@driver.execute_script(javascript_string)
|
105
42
|
end
|
106
|
-
|
107
|
-
# Perform a click action on the element
|
108
|
-
# @return [void]
|
109
|
-
def click
|
110
|
-
self.scroll_into_view
|
111
|
-
@subject.click
|
112
|
-
end
|
113
43
|
end
|
114
44
|
end
|
115
45
|
end
|
116
|
-
end
|
46
|
+
end
|
@@ -1,33 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative 'dsl/top'
|
3
|
+
|
1
4
|
module AutomationObject
|
2
|
-
#Dsl Port
|
5
|
+
# Dsl Port
|
3
6
|
module Dsl
|
4
|
-
|
5
|
-
|
6
|
-
# @return [AutomationObject::Dsl::Module]
|
7
|
-
def adapter
|
8
|
-
return @adapter if @adapter
|
9
|
-
self.adapter = :blue_print
|
10
|
-
@adapter
|
11
|
-
end
|
12
|
-
|
13
|
-
# Sets adapter const will append _adapter if needed
|
14
|
-
# @param adapter_name [String] name of adapter wanted for composite creation
|
15
|
-
def adapter=(adapter_name)
|
16
|
-
adapter_name = adapter_name.to_s
|
17
|
-
adapter_name << '_adapter' unless adapter_name.match(/_adapter$/)
|
18
|
-
adapter_const = adapter_name.pascalize
|
19
|
-
|
20
|
-
require_relative "dsl/#{adapter_name}"
|
21
|
-
@adapter = AutomationObject::Dsl.const_get("#{adapter_const}")
|
22
|
-
end
|
23
|
-
|
24
|
-
# Creates/returns composite and attaches the State to the composite
|
25
|
-
# @return [AutomationObject::Dsl::Models::Top]
|
26
|
-
def new(args={})
|
27
|
-
composite = self.adapter.build(args)
|
28
|
-
composite.state = args.fetch(:state)
|
7
|
+
module_function
|
29
8
|
|
30
|
-
|
9
|
+
# @param [AutomationObject::BluePrint::Composite::Top] blue_prints
|
10
|
+
# @param [AutomationObject::State::Session] state
|
11
|
+
# @return [AutomationObject::Dsl::Top]
|
12
|
+
def create(blue_prints, state)
|
13
|
+
TopProxy.new(blue_prints, state, :top)
|
31
14
|
end
|
32
15
|
end
|
33
|
-
end
|
16
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AutomationObject
|
4
|
+
module Dsl
|
5
|
+
# Base DSL Object
|
6
|
+
class Base < OpenStruct
|
7
|
+
# @param [AutomationObject::BluePrint::Composite::] blue_prints
|
8
|
+
# @param [AutomationObject::State::Session] state
|
9
|
+
def initialize(blue_prints, state)
|
10
|
+
ostruct_hash = {}
|
11
|
+
|
12
|
+
# Add attributes the call super
|
13
|
+
self.class.has_many_relationships.each do |name, composite_class|
|
14
|
+
blue_prints.send(name).each do |child_key, child_blue_prints|
|
15
|
+
ostruct_hash[child_key] = composite_class.new(child_blue_prints, state, child_key)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
super ostruct_hash
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param _indent [Integer]
|
23
|
+
# @return [String]
|
24
|
+
def inspect(_indent = 5)
|
25
|
+
string = self.class.to_s
|
26
|
+
|
27
|
+
to_h.each do |key, value|
|
28
|
+
string += formatted_name(key, _indent)
|
29
|
+
string += sub_inspect(value, _indent)
|
30
|
+
end
|
31
|
+
|
32
|
+
string
|
33
|
+
end
|
34
|
+
|
35
|
+
# @param key [String]
|
36
|
+
# @param indent [Integer]
|
37
|
+
# @return [String]
|
38
|
+
def formatted_name(key, indent)
|
39
|
+
# TODO: finish
|
40
|
+
# color = self[key].alive? ? :green : :blue
|
41
|
+
"\n#{' ' * indent} #{key}:".colorize(:green)
|
42
|
+
end
|
43
|
+
|
44
|
+
# @param value [Object]
|
45
|
+
# @param indent [Integer]
|
46
|
+
# @return [String]
|
47
|
+
def sub_inspect(value, indent)
|
48
|
+
if value.is_a?(Base)
|
49
|
+
" #{value.inspect(indent + 10)}"
|
50
|
+
else
|
51
|
+
" #{value.inspect}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class << self
|
56
|
+
# Has many children relationship for the composite
|
57
|
+
# @param children_name [Symbol] name of the children, should be a BluePrint method
|
58
|
+
# @param composite_class [Class] interface
|
59
|
+
def has_many(children_name, composite_class)
|
60
|
+
has_many_relationships[children_name] = composite_class
|
61
|
+
end
|
62
|
+
|
63
|
+
# @return [Hash] relationships for the composite
|
64
|
+
def has_many_relationships
|
65
|
+
@has_many_relationships ||= {}
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '../proxy/proxy'
|
3
|
+
|
4
|
+
module AutomationObject
|
5
|
+
module Dsl
|
6
|
+
# Base Proxy Object
|
7
|
+
# Proxies intercept commands and issue calls to the state
|
8
|
+
# Prevents inspection from picking up internal methods
|
9
|
+
class Proxy < AutomationObject::Proxy::Proxy
|
10
|
+
# @param subject_class [AutomationObject::Dsl::CompositeBase, nil]
|
11
|
+
# @param blue_prints [AutomationObject::BluePrint::Composite::CompositeBase]
|
12
|
+
# @param state [AutomationObject::State::Session]
|
13
|
+
# @param name [Symbol]
|
14
|
+
def initialize(subject_class, blue_prints, state, name)
|
15
|
+
@blue_prints = blue_prints
|
16
|
+
@state = state
|
17
|
+
@name = name
|
18
|
+
@subject_class = subject_class
|
19
|
+
|
20
|
+
@subject = @subject_class.new(blue_prints, state)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '_proxy'
|
3
|
+
|
4
|
+
module AutomationObject
|
5
|
+
module Dsl
|
6
|
+
# Element DSL Class
|
7
|
+
class Element < Base
|
8
|
+
end
|
9
|
+
|
10
|
+
# Proxy for Element
|
11
|
+
class ElementProxy < Proxy
|
12
|
+
# @param [AutomationObject::BluePrint::Composite::Element] blue_prints
|
13
|
+
# @param [AutomationObject::State::Session] state
|
14
|
+
# @param [Symbol] name
|
15
|
+
def initialize(blue_prints, state, name)
|
16
|
+
super Element, blue_prints, state, name
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param [Symbol] method
|
20
|
+
# @param [Array, nil] args
|
21
|
+
# @param [Proc] block
|
22
|
+
def method_missing(method, *args, &block)
|
23
|
+
return super if Element.methods.include?(method)
|
24
|
+
|
25
|
+
if @subject.is_a?(AutomationObject::Dsl::Element)
|
26
|
+
# puts "@state.load(:element, #{@name})"
|
27
|
+
@subject = @state.load(:element, @name)
|
28
|
+
end
|
29
|
+
|
30
|
+
super
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '_proxy'
|
3
|
+
|
4
|
+
module AutomationObject
|
5
|
+
module Dsl
|
6
|
+
# ElementArray DSL Class
|
7
|
+
class ElementArray < Base
|
8
|
+
end
|
9
|
+
|
10
|
+
# Proxy for ElementArray
|
11
|
+
class ElementArrayProxy < Proxy
|
12
|
+
# @param [AutomationObject::BluePrint::Composite::ElementArray] blue_prints
|
13
|
+
# @param [AutomationObject::State::Session] state
|
14
|
+
# @param [Symbol] name
|
15
|
+
def initialize(blue_prints, state, name)
|
16
|
+
super ElementArray, blue_prints, state, name
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param [Symbol] method
|
20
|
+
# @param [Array, nil] args
|
21
|
+
# @param [Proc] block
|
22
|
+
def method_missing(method, *args, &block)
|
23
|
+
return super if ElementArray.methods.include?(method)
|
24
|
+
|
25
|
+
if @subject.is_a?(AutomationObject::Dsl::ElementArray)
|
26
|
+
# puts "@state.load(:element_array, #{@name})"
|
27
|
+
@subject = @state.load(:element_array, @name)
|
28
|
+
end
|
29
|
+
|
30
|
+
super
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '_proxy'
|
3
|
+
|
4
|
+
module AutomationObject
|
5
|
+
module Dsl
|
6
|
+
# ElementHash DSL Class
|
7
|
+
class ElementHash < Base
|
8
|
+
end
|
9
|
+
|
10
|
+
# Proxy for ElementHash
|
11
|
+
class ElementHashProxy < Proxy
|
12
|
+
# @param [AutomationObject::BluePrint::Composite::ElementHash] blue_prints
|
13
|
+
# @param [AutomationObject::State::Session] state
|
14
|
+
# @param [Symbol] name
|
15
|
+
def initialize(blue_prints, state, name)
|
16
|
+
super ElementHash, blue_prints, state, name
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param [Symbol] method
|
20
|
+
# @param [Array, nil] args
|
21
|
+
# @param [Proc] block
|
22
|
+
def method_missing(method, *args, &block)
|
23
|
+
return super if ElementHash.methods.include?(method)
|
24
|
+
|
25
|
+
if @subject.is_a?(AutomationObject::Dsl::ElementHash)
|
26
|
+
# puts "@state.load(:element_hash, #{@name})"
|
27
|
+
@subject = @state.load(:element_hash, @name)
|
28
|
+
end
|
29
|
+
|
30
|
+
super
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '_base'
|
3
|
+
require_relative '_proxy'
|
4
|
+
|
5
|
+
require_relative 'element'
|
6
|
+
require_relative 'element_array'
|
7
|
+
require_relative 'element_hash'
|
8
|
+
|
9
|
+
module AutomationObject
|
10
|
+
module Dsl
|
11
|
+
# Modal DSL Class
|
12
|
+
class Modal < Base
|
13
|
+
has_many :elements, ElementProxy
|
14
|
+
has_many :element_arrays, ElementArrayProxy
|
15
|
+
has_many :element_hashes, ElementHashProxy
|
16
|
+
end
|
17
|
+
|
18
|
+
# Proxy for Modal
|
19
|
+
class ModalProxy < Proxy
|
20
|
+
# @param [AutomationObject::BluePrint::Composite::Modal] blue_prints
|
21
|
+
# @param [AutomationObject::State::Session] state
|
22
|
+
# @param [Symbol] name
|
23
|
+
def initialize(blue_prints, state, name)
|
24
|
+
super Modal, blue_prints, state, name
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param [Symbol] method
|
28
|
+
# @param [Array, nil] args
|
29
|
+
# @param [Proc] block
|
30
|
+
def method_missing(method, *args, &block)
|
31
|
+
return super if Modal.methods.include?(method)
|
32
|
+
|
33
|
+
# Attempt to load screen if composite object contains that child
|
34
|
+
if @subject.methods.include?(method)
|
35
|
+
# puts "@state.load(:modal, #{@name})"
|
36
|
+
@state.load(:modal, @name)
|
37
|
+
end
|
38
|
+
|
39
|
+
super
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative '_base'
|
3
|
+
require_relative '_proxy'
|
4
|
+
|
5
|
+
require_relative 'modal'
|
6
|
+
require_relative 'element'
|
7
|
+
require_relative 'element_array'
|
8
|
+
require_relative 'element_hash'
|
9
|
+
|
10
|
+
module AutomationObject
|
11
|
+
module Dsl
|
12
|
+
# Screen DSL Class
|
13
|
+
class Screen < Base
|
14
|
+
has_many :modals, ModalProxy
|
15
|
+
has_many :elements, ElementProxy
|
16
|
+
has_many :element_arrays, ElementArrayProxy
|
17
|
+
has_many :element_hashes, ElementHashProxy
|
18
|
+
end
|
19
|
+
|
20
|
+
# Proxy for Screen
|
21
|
+
class ScreenProxy < Proxy
|
22
|
+
# @param [AutomationObject::BluePrint::Composite::Screen] blue_prints
|
23
|
+
# @param [AutomationObject::State::Session] state
|
24
|
+
# @param [Symbol] name
|
25
|
+
def initialize(blue_prints, state, name)
|
26
|
+
super Screen, blue_prints, state, name
|
27
|
+
end
|
28
|
+
|
29
|
+
# @param [Symbol] method
|
30
|
+
# @param [Array, nil] args
|
31
|
+
# @param [Proc] block
|
32
|
+
def method_missing(method, *args, &block)
|
33
|
+
return super if Screen.methods.include?(method)
|
34
|
+
|
35
|
+
# Attempt to load screen if composite object contains that child
|
36
|
+
if @subject.methods.include?(method)
|
37
|
+
# puts "@state.load(:screen, #{@name})"
|
38
|
+
@state.load(:screen, @name)
|
39
|
+
end
|
40
|
+
|
41
|
+
super
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|