automation_object 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,23 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module AutomationObject
|
2
3
|
module BluePrint
|
3
4
|
module HashAdapter
|
4
5
|
module Validators
|
5
|
-
#Super-class for validators, contains base functionality
|
6
|
-
#Sub-classes must implement validate for the composite
|
6
|
+
# Super-class for validators, contains base functionality
|
7
|
+
# Sub-classes must implement validate for the composite
|
7
8
|
class Validate
|
8
9
|
attr_accessor :error_messages
|
9
10
|
|
11
|
+
# Remove getter to solve stupid Ruby warning
|
12
|
+
undef :error_messages if method_defined? :error_messages
|
10
13
|
# @return [Array<String>] array of error messages, default empty array
|
11
14
|
def error_messages
|
12
|
-
@error_messages ||=
|
15
|
+
@error_messages ||= []
|
13
16
|
end
|
14
17
|
|
15
18
|
# @return [Boolean] whether or not validation passed or failed
|
16
19
|
def valid?
|
17
|
-
|
20
|
+
error_messages.length.zero? ? true : false
|
18
21
|
end
|
19
22
|
end
|
20
23
|
end
|
21
24
|
end
|
22
25
|
end
|
23
|
-
end
|
26
|
+
end
|
data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_allowed_keys.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative 'validate'
|
2
3
|
|
3
4
|
module AutomationObject
|
4
5
|
module BluePrint
|
5
6
|
module HashAdapter
|
6
7
|
module Validators
|
7
|
-
#Validator that tests the composite hash for bad keys
|
8
|
+
# Validator that tests the composite hash for bad keys
|
8
9
|
class ValidateAllowedKeys < Validate
|
9
10
|
# @param args [Hash] arguments for the validation class
|
10
11
|
def initialize(args)
|
@@ -15,17 +16,15 @@ module AutomationObject
|
|
15
16
|
# @param composite_object [Object] Composite object to be tested.
|
16
17
|
# @return [nil] no return on exceptions on failure
|
17
18
|
def validate(composite_object)
|
18
|
-
#Get the hash from the composite object
|
19
|
+
# Get the hash from the composite object
|
19
20
|
target_hash = composite_object.hash
|
20
21
|
|
21
|
-
target_hash.each_key
|
22
|
-
unless @allowed_keys.include?(key)
|
23
|
-
|
24
|
-
end
|
25
|
-
}
|
22
|
+
target_hash.each_key do |key|
|
23
|
+
error_messages.push("Invalid Key: #{key}, at: #{composite_object.location}. Allowed keys: #{@allowed_keys}.") unless @allowed_keys.include?(key)
|
24
|
+
end
|
26
25
|
end
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
30
29
|
end
|
31
|
-
end
|
30
|
+
end
|
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative 'validate'
|
2
3
|
|
3
4
|
module AutomationObject
|
4
5
|
module BluePrint
|
5
6
|
module HashAdapter
|
6
7
|
module Validators
|
7
|
-
#Validator that tests that a element is defined when it is called elsewhere through a hook
|
8
|
+
# Validator that tests that a element is defined when it is called elsewhere through a hook
|
8
9
|
class ValidateElementPresenceOf < Validate
|
9
10
|
# @param args [Hash] arguments for the validation class
|
10
11
|
def initialize(args)
|
@@ -15,41 +16,45 @@ module AutomationObject
|
|
15
16
|
# @param composite_object [Object] Composite object to be tested.
|
16
17
|
# @return [nil] no return on exceptions on failure
|
17
18
|
def validate(composite_object)
|
18
|
-
#Get the hash value from the composite object
|
19
|
+
# Get the hash value from the composite object
|
19
20
|
target_value = composite_object.hash[@key]
|
20
21
|
|
21
22
|
return unless target_value
|
22
23
|
|
23
|
-
target_values =
|
24
|
+
target_values = target_value.is_a?(Array) ? target_value : [target_value]
|
25
|
+
valid_elements = find_elements(composite_object)
|
24
26
|
|
25
|
-
valid_elements
|
26
|
-
|
27
|
-
target_values.each { |element|
|
28
|
-
element = element.to_sym
|
29
|
-
next if valid_elements.include?(element)
|
30
|
-
|
31
|
-
error_message = "Invalid Element: #{element}, at: #{composite_object.location}[#{@key}]."
|
32
|
-
error_message << " Valid Elements(s): #{valid_elements}"
|
33
|
-
self.error_messages.push(error_message)
|
34
|
-
}
|
27
|
+
populate_errors(target_values, valid_elements, composite_object)
|
35
28
|
end
|
36
29
|
|
37
|
-
|
30
|
+
private
|
31
|
+
|
32
|
+
# Traverses up a composite tree to find :elements in a hash
|
38
33
|
# @param composite_object [Object] composite object to traverse up
|
39
34
|
# @return [Array<Symbol>] array of element names
|
40
35
|
def find_elements(composite_object)
|
41
|
-
#Using the hash instead of the method because lower nodes will get validated
|
42
|
-
#before composite is finished building
|
43
|
-
if composite_object.hash[:elements].is_a?(Hash)
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
36
|
+
# Using the hash instead of the method because lower nodes will get validated
|
37
|
+
# before composite is finished building
|
38
|
+
return composite_object.hash[:elements].keys if composite_object.hash[:elements].is_a?(Hash)
|
39
|
+
|
40
|
+
# Should be Hash with element names as the keys
|
41
|
+
return find_elements(composite_object.parent) if composite_object.parent
|
48
42
|
|
49
|
-
|
43
|
+
[]
|
44
|
+
end
|
45
|
+
|
46
|
+
def populate_errors(target_values, valid_elements, composite_object)
|
47
|
+
target_values.each do |element|
|
48
|
+
element = element.to_sym
|
49
|
+
next if valid_elements.include?(element)
|
50
|
+
|
51
|
+
error_message = "Invalid Element: #{element}, at: #{composite_object.location}[#{@key}]."
|
52
|
+
error_message += " Valid Elements(s): #{valid_elements}"
|
53
|
+
error_messages.push(error_message)
|
54
|
+
end
|
50
55
|
end
|
51
56
|
end
|
52
57
|
end
|
53
58
|
end
|
54
59
|
end
|
55
|
-
end
|
60
|
+
end
|
data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_instance_of.rb
CHANGED
@@ -1,39 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative 'validate'
|
2
3
|
|
3
4
|
module AutomationObject
|
4
5
|
module BluePrint
|
5
6
|
module HashAdapter
|
6
7
|
module Validators
|
7
|
-
#Validator that tests that a element is defined when it is called elsewhere through a hook
|
8
|
+
# Validator that tests that a element is defined when it is called elsewhere through a hook
|
8
9
|
class ValidateInstanceOf < Validate
|
9
10
|
# @param args [Hash] arguments for the validation class
|
10
11
|
def initialize(args)
|
11
12
|
@key = args.fetch :key
|
12
|
-
#Convert to array of instances for consistency
|
13
|
-
@should_be_instances_of =
|
13
|
+
# Convert to array of instances for consistency
|
14
|
+
@should_be_instances_of = args.fetch(:args).is_a?(Array) ? args.fetch(:args) : [args.fetch(:args)]
|
14
15
|
end
|
15
16
|
|
16
|
-
# Validates the composite object and
|
17
|
-
# @param composite_object [
|
17
|
+
# Validates the composite object and adds errors on failure
|
18
|
+
# @param composite_object [AutomationObject::BluePrint::HashAdapter::Composite] composite
|
18
19
|
# @return [nil] no return on exceptions on failure
|
19
20
|
def validate(composite_object)
|
20
|
-
#Get the hash value from the composite object
|
21
|
+
# Get the hash value from the composite object
|
21
22
|
target_value = composite_object.hash[@key]
|
22
23
|
|
23
|
-
#Skip empty or non-existent
|
24
|
+
# Skip empty or non-existent
|
24
25
|
return unless target_value
|
25
26
|
|
26
|
-
@should_be_instances_of.
|
27
|
-
return if target_value.is_a?(should_be_instance_of)
|
28
|
-
}
|
27
|
+
return if @should_be_instances_of.any? { |should_instance| target_value.is_a?(should_instance) }
|
29
28
|
|
30
29
|
error_message = "Invalid Type: #{target_value.class}, at: #{composite_object.location}[#{@key}]."
|
31
|
-
error_message
|
30
|
+
error_message += " Allowed Type(s): #{@should_be_instances_of}"
|
32
31
|
|
33
|
-
|
32
|
+
error_messages.push(error_message)
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
37
36
|
end
|
38
37
|
end
|
39
|
-
end
|
38
|
+
end
|
data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_modal_presence_of.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative 'validate'
|
2
3
|
|
3
4
|
module AutomationObject
|
4
5
|
module BluePrint
|
5
6
|
module HashAdapter
|
6
7
|
module Validators
|
7
|
-
#Validator that tests that a modal is defined when it is called elsewhere through a hook
|
8
|
+
# Validator that tests that a modal is defined when it is called elsewhere through a hook
|
8
9
|
class ValidateModalPresenceOf < Validate
|
9
10
|
# @param args [Hash] arguments for the validation class
|
10
11
|
def initialize(args)
|
@@ -15,40 +16,43 @@ module AutomationObject
|
|
15
16
|
# @param composite_object [Object] Composite object to be tested.
|
16
17
|
# @return [nil] no return on exceptions on failure
|
17
18
|
def validate(composite_object)
|
18
|
-
#Get the hash value from the composite object
|
19
|
+
# Get the hash value from the composite object
|
19
20
|
target_value = composite_object.hash[@key]
|
20
|
-
target_values =
|
21
|
+
target_values = target_value.is_a?(Array) ? target_value : [target_value]
|
21
22
|
|
22
23
|
return unless target_value
|
23
24
|
|
24
|
-
valid_modals =
|
25
|
-
|
26
|
-
target_values.each { |modal|
|
27
|
-
modal = modal.to_sym
|
28
|
-
next if valid_modals.include?(modal)
|
29
|
-
|
30
|
-
error_message = "Invalid Modal: #{modal}, at: #{composite_object.location}[#{@key}]."
|
31
|
-
error_message << " Valid Modal(s): #{valid_modals}"
|
32
|
-
self.error_messages.push(error_message)
|
33
|
-
}
|
25
|
+
valid_modals = find_modals(composite_object)
|
26
|
+
populate_errors(target_values, valid_modals, composite_object)
|
34
27
|
end
|
35
28
|
|
36
|
-
|
29
|
+
private
|
30
|
+
|
31
|
+
# Traverses up a composite tree to find :modals in a hash
|
37
32
|
# @param composite_object [Object] composite object to traverse up
|
38
33
|
# @return [Array<Symbol>] array of modal names
|
39
34
|
def find_modals(composite_object)
|
40
|
-
#Using the hash instead of the method because lower nodes will get validated
|
41
|
-
#before composite is finished building
|
42
|
-
if composite_object.hash[:modals].is_a?(Hash)
|
43
|
-
|
44
|
-
|
45
|
-
return self.find_modals(composite_object.parent)
|
46
|
-
end
|
35
|
+
# Using the hash instead of the method because lower nodes will get validated
|
36
|
+
# before composite is finished building
|
37
|
+
return composite_object.hash[:modals].keys if composite_object.hash[:modals].is_a?(Hash)
|
38
|
+
|
39
|
+
return find_modals(composite_object.parent) if composite_object.parent
|
47
40
|
|
48
|
-
|
41
|
+
[]
|
42
|
+
end
|
43
|
+
|
44
|
+
def populate_errors(target_values, valid_modals, composite_object)
|
45
|
+
target_values.each do |modal|
|
46
|
+
modal = modal.to_sym
|
47
|
+
next if valid_modals.include?(modal)
|
48
|
+
|
49
|
+
error_message = "Invalid Modal: #{modal}, at: #{composite_object.location}[#{@key}]."
|
50
|
+
error_message += " Valid Modal(s): #{valid_modals}"
|
51
|
+
error_messages.push(error_message)
|
52
|
+
end
|
49
53
|
end
|
50
54
|
end
|
51
55
|
end
|
52
56
|
end
|
53
57
|
end
|
54
|
-
end
|
58
|
+
end
|
data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_presence_of.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative 'validate'
|
2
3
|
|
3
4
|
module AutomationObject
|
4
5
|
module BluePrint
|
5
6
|
module HashAdapter
|
6
7
|
module Validators
|
7
|
-
#Validates tests the a key exists on a composite hash
|
8
|
+
# Validates tests the a key exists on a composite hash
|
8
9
|
class ValidatePresenceOf < Validate
|
9
10
|
# @param args [Hash] arguments for the validation class
|
10
11
|
def initialize(args)
|
11
12
|
@key = args.fetch :key
|
12
13
|
|
13
14
|
options = args.fetch :args, {}
|
14
|
-
options =
|
15
|
+
options = options.is_a?(Hash) ? options : {}
|
15
16
|
@unless_presence_of = options.fetch :unless_presence_of, nil
|
16
17
|
end
|
17
18
|
|
@@ -19,18 +20,18 @@ module AutomationObject
|
|
19
20
|
# @param composite_object [Object] Composite object to be tested.
|
20
21
|
# @return [nil] no return on exceptions on failure
|
21
22
|
def validate(composite_object)
|
22
|
-
#Get the hash value from the composite object
|
23
|
-
return if composite_object.hash.
|
23
|
+
# Get the hash value from the composite object
|
24
|
+
return if composite_object.hash.key?(@key)
|
24
25
|
|
25
|
-
#Do unless_presence_of check
|
26
|
+
# Do unless_presence_of check
|
26
27
|
if @unless_presence_of
|
27
|
-
return if composite_object.hash.
|
28
|
+
return if composite_object.hash.key?(@unless_presence_of)
|
28
29
|
end
|
29
30
|
|
30
|
-
|
31
|
+
error_messages.push("Required Key Missing: #{@key}, at: #{composite_object.location}.")
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
34
35
|
end
|
35
36
|
end
|
36
|
-
end
|
37
|
+
end
|
data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_screen_presence_of.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative 'validate'
|
2
3
|
|
3
4
|
module AutomationObject
|
4
5
|
module BluePrint
|
5
6
|
module HashAdapter
|
6
7
|
module Validators
|
7
|
-
#Validator that tests that a screen is defined when it is called elsewhere through a hook
|
8
|
+
# Validator that tests that a screen is defined when it is called elsewhere through a hook
|
8
9
|
class ValidateScreenPresenceOf < Validate
|
9
10
|
# @param args [Hash] arguments for the validation class
|
10
11
|
def initialize(args)
|
@@ -15,41 +16,44 @@ module AutomationObject
|
|
15
16
|
# @param composite_object [Object] Composite object to be tested.
|
16
17
|
# @return [nil] no return on exceptions on failure
|
17
18
|
def validate(composite_object)
|
18
|
-
#Get the hash value from the composite object
|
19
|
+
# Get the hash value from the composite object
|
19
20
|
target_value = composite_object.hash[@key]
|
20
21
|
|
21
22
|
return unless target_value
|
22
23
|
|
23
|
-
target_values =
|
24
|
+
target_values = target_value.is_a?(Array) ? target_value : [target_value]
|
24
25
|
|
25
|
-
valid_screens =
|
26
|
-
|
27
|
-
target_values.each { |screen|
|
28
|
-
screen = screen.to_sym
|
29
|
-
next if valid_screens.include?(screen)
|
30
|
-
|
31
|
-
error_message = "Invalid Screen: #{screen}, at: #{composite_object.location}[#{@key}]."
|
32
|
-
error_message << " Valid Screen(s): #{valid_screens}"
|
33
|
-
self.error_messages.push(error_message)
|
34
|
-
}
|
26
|
+
valid_screens = find_screens(composite_object)
|
27
|
+
populate_errors(target_values, valid_screens, composite_object)
|
35
28
|
end
|
36
29
|
|
37
|
-
|
30
|
+
private
|
31
|
+
|
32
|
+
# Traverses up a composite tree to find :screens in a hash
|
38
33
|
# @param composite_object [Object] composite object to traverse up
|
39
34
|
# @return [Array<Symbol>] array of screen names
|
40
35
|
def find_screens(composite_object)
|
41
|
-
#Using the hash instead of the method because lower nodes will get validated
|
42
|
-
#before composite is finished building
|
43
|
-
if composite_object.hash[:screens].is_a?(Hash)
|
44
|
-
|
45
|
-
|
46
|
-
return self.find_screens(composite_object.parent)
|
47
|
-
end
|
36
|
+
# Using the hash instead of the method because lower nodes will get validated
|
37
|
+
# before composite is finished building
|
38
|
+
return composite_object.hash[:screens].keys if composite_object.hash[:screens].is_a?(Hash)
|
39
|
+
|
40
|
+
return find_screens(composite_object.parent) if composite_object.parent
|
48
41
|
|
49
|
-
|
42
|
+
[]
|
43
|
+
end
|
44
|
+
|
45
|
+
def populate_errors(target_values, valid_screens, composite_object)
|
46
|
+
target_values.each do |screen|
|
47
|
+
screen = screen.to_sym
|
48
|
+
next if valid_screens.include?(screen)
|
49
|
+
|
50
|
+
error_message = "Invalid Screen: #{screen}, at: #{composite_object.location}[#{@key}]."
|
51
|
+
error_message += " Valid Screen(s): #{valid_screens}"
|
52
|
+
error_messages.push(error_message)
|
53
|
+
end
|
50
54
|
end
|
51
55
|
end
|
52
56
|
end
|
53
57
|
end
|
54
58
|
end
|
55
|
-
end
|
59
|
+
end
|
data/lib/automation_object/blue_print/hash_adapter/helpers/validators/validate_view_presence_of.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require_relative 'validate'
|
2
3
|
|
3
4
|
module AutomationObject
|
4
5
|
module BluePrint
|
5
6
|
module HashAdapter
|
6
7
|
module Validators
|
7
|
-
#Validator that tests that a view is defined when it is called elsewhere through a hook
|
8
|
+
# Validator that tests that a view is defined when it is called elsewhere through a hook
|
8
9
|
class ValidateViewPresenceOf < Validate
|
9
10
|
# @param args [Hash] arguments for the validation class
|
10
11
|
def initialize(args)
|
@@ -15,38 +16,41 @@ module AutomationObject
|
|
15
16
|
# @param composite_object [Object] Composite object to be tested.
|
16
17
|
# @return [nil] no return on exceptions on failure
|
17
18
|
def validate(composite_object)
|
18
|
-
#Get the hash value from the composite object
|
19
|
+
# Get the hash value from the composite object
|
19
20
|
target_value = composite_object.hash[@key]
|
20
|
-
target_values =
|
21
|
+
target_values = target_value.is_a?(Array) ? target_value : [target_value]
|
21
22
|
|
22
23
|
return unless target_value
|
23
24
|
|
24
|
-
valid_views =
|
25
|
+
valid_views = find_views(composite_object)
|
26
|
+
populate_errors(target_values, valid_views, composite_object)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
# Need to traverse up the composite tree and find views
|
32
|
+
def find_views(composite_object)
|
33
|
+
# Using the hash instead of the method because lower nodes will get validated
|
34
|
+
# before composite is finished building
|
35
|
+
return composite_object.hash[:views].keys if composite_object.hash[:views].is_a?(Hash)
|
36
|
+
|
37
|
+
return find_views(composite_object.parent) if composite_object.parent
|
25
38
|
|
26
|
-
|
39
|
+
[]
|
40
|
+
end
|
41
|
+
|
42
|
+
def populate_errors(target_values, valid_views, composite_object)
|
43
|
+
target_values.each do |view|
|
27
44
|
view = view.to_sym
|
28
45
|
next if valid_views.include?(view)
|
29
46
|
|
30
47
|
error_message = "Invalid View: #{view}, at: #{composite_object.location}[#{@key}]."
|
31
|
-
error_message
|
32
|
-
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
#Need to traverse up the composite tree and find views
|
37
|
-
def find_views(composite_object)
|
38
|
-
#Using the hash instead of the method because lower nodes will get validated
|
39
|
-
#before composite is finished building
|
40
|
-
if composite_object.hash[:views].is_a?(Hash)
|
41
|
-
return composite_object.hash[:views].keys #Should be Hash with view names as the keys
|
42
|
-
elsif composite_object.parent
|
43
|
-
return self.find_views(composite_object.parent)
|
48
|
+
error_message += " Valid Views(s): #{valid_views}"
|
49
|
+
error_messages.push(error_message)
|
44
50
|
end
|
45
|
-
|
46
|
-
return []
|
47
51
|
end
|
48
52
|
end
|
49
53
|
end
|
50
54
|
end
|
51
55
|
end
|
52
|
-
end
|
56
|
+
end
|