validation_profiler 1.6.0 → 1.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cd242f26877fb5954baa686b282171c4a23140bf62b9c3aba54b852113e1b010
4
- data.tar.gz: 322672ae856dc72c33b2a7a91a0301db199d915c92d40f692781ac8318640011
3
+ metadata.gz: 043535effac77ff6205ee511cc20214c5dad1de512014ecf1db561891e025791
4
+ data.tar.gz: 0d8d7081096e6a7375efc624a4a202597a14a6975d21d7d8e7996ba7590df7f2
5
5
  SHA512:
6
- metadata.gz: a65c9098384d2ea03032be86c4b849c3a4d3f3ab21f8a945218e2690a39a076167bf8eb36b67a1f2b3ae835a2a1e762fa5a730b1ed6c694be3d10675a77039fe
7
- data.tar.gz: 01bf3313e874ceb2fd4165007289d38350ced6be514c9208a54e6b0d96131b159df55f5739641847ced169fe964b70b6285805090bd9397600286b42ea3894ed
6
+ metadata.gz: 4c38cb57d62d8c4f324b27daf6d7eda4371474cfa608b863b7b158a2eeefe96cd8f66dbd32da9003560940eb3d5058c3d1967c2986c76edcf68738368d1c63b0
7
+ data.tar.gz: ba93d8133e0497e89d5e6d0a60f3d93943eb29424d4eaba0ee5a07b7aa36c5c088a6cc4a2d400730b9465611077f36f28de976d57e83ee164d246a5c58e499a5
@@ -1,6 +1,5 @@
1
1
  module ValidationProfiler
2
2
  class Manager
3
-
4
3
  # Called to validate an object against a validation profile.
5
4
  #
6
5
  # @param obj [Object] The object to validate
@@ -8,33 +7,32 @@ module ValidationProfiler
8
7
  #
9
8
  # @return [ValidationManagerResult] The result of the validation
10
9
  def validate(obj, profile, parent = nil)
11
-
12
10
  result = ValidationProfiler::ManagerResult.new
13
11
 
14
12
  validation_rules = profile.class_variable_get(:@@validation_rules)
15
13
 
16
14
  validation_rules.each do |r|
17
15
 
18
- if ValidationProfiler::Rules::Manager.instance == nil
16
+ if ValidationProfiler::Rules::Manager.instance.nil?
19
17
  ValidationProfiler::Rules::Manager.new
20
18
  end
21
19
 
22
20
  rule = ValidationProfiler::Rules::Manager.instance.get_rule(r[:name])
23
21
  outcome = rule.validate(obj, r[:field], r[:attributes], parent)
24
22
 
25
- if outcome.is_a?(ValidationProfiler::ManagerResult) && !outcome.outcome
23
+ if outcome.is_a?(Array)
24
+ result.errors = outcome.map(&:errors).flatten
25
+ result.outcome = result.errors.empty?
26
+ elsif outcome.is_a?(ValidationProfiler::ManagerResult) && !outcome.outcome
26
27
  result.errors = result.errors + outcome.errors
27
28
  result.outcome = false
28
29
  elsif !outcome
29
30
  result.outcome = false
30
- result.errors.push({ field: r[:field], message: rule.error_message(r[:field], r[:attributes], parent) })
31
+ result.errors.push(field: r[:field], message: rule.error_message(r[:field], r[:attributes], parent))
31
32
  end
32
-
33
33
  end
34
34
 
35
35
  result
36
-
37
36
  end
38
-
39
37
  end
40
- end
38
+ end
@@ -1,17 +1,14 @@
1
1
  module ValidationProfiler
2
2
  module Rules
3
+ # Validation rule for child attributes
3
4
  class ChildValidationRule < ValidationProfiler::Rules::ValidationRule
4
-
5
5
  def error_message(field, attributes = {}, parent = nil)
6
-
7
6
  field_name = field.to_s
8
- if parent != nil
9
- field_name = "#{parent.to_s}.#{field.to_s}"
10
- end
7
+ field_name = "#{parent}.#{field}" unless parent.nil?
11
8
 
12
- #check if a custom error message has been specified in the attributes
13
- if attributes[:message] == nil
14
- #no custom error message has been specified so create the default message.
9
+ # check if a custom error message has been specified in the attributes
10
+ if attributes[:message].nil?
11
+ # no custom error message has been specified so create the default message.
15
12
  "#{field_name} is required."
16
13
  else
17
14
  attributes[:message]
@@ -19,32 +16,41 @@ module ValidationProfiler
19
16
  end
20
17
 
21
18
  def validate(obj, field, attributes = {}, parent = nil)
22
-
23
- #attempt to get the field value from the object
19
+ # attempt to get the field value from the object
24
20
  field_value = get_field_value(obj, field)
25
21
 
26
- if !is_required?(field_value, attributes)
27
- return true
28
- end
22
+ return true unless is_required?(field_value, attributes)
23
+ return false if field_value.nil?
24
+ return false if field_value.respond_to?(:empty?) && field_value.empty?
29
25
 
30
- profile = attributes[:profile]
31
- if profile == nil
32
- raise ValidationProfiler::Exceptions::InvalidValidationRuleAttributes.new(ValidationProfiler::Rules::ChildValidationRule, field)
33
- end
26
+ validation_profile = get_validation_profile(attributes, field)
27
+ parent_field = build_parent_field(parent, field)
34
28
 
35
- if field_value == nil
36
- return false
37
- end
29
+ validate_field_value(field_value, validation_profile, parent_field)
30
+ end
38
31
 
39
- parent_field = field.to_s
40
- if parent != nil
41
- parent_field = "#{parent.to_s}.#{field.to_s}"
32
+ def validate_field_value(field_value, profile, parent_field)
33
+ if field_value.is_a? Array
34
+ field_value.map { |value| ValidationProfiler::Manager.new.validate(value, profile, parent_field) }
35
+ else
36
+ ValidationProfiler::Manager.new.validate(field_value, profile, parent_field)
42
37
  end
38
+ end
43
39
 
44
- return ValidationProfiler::Manager.new.validate(field_value, profile, parent_field)
40
+ def build_parent_field(parent, field)
41
+ return field.to_s if parent.nil?
45
42
 
43
+ "#{parent}.#{field}"
46
44
  end
47
45
 
46
+ def get_validation_profile(attributes, field)
47
+ if attributes[:profile].nil?
48
+ raise ValidationProfiler::Exceptions::InvalidValidationRuleAttributes
49
+ .new(ValidationProfiler::Rules::ChildValidationRule, field)
50
+ end
51
+
52
+ attributes[:profile]
53
+ end
48
54
  end
49
55
  end
50
- end
56
+ end
@@ -1,5 +1,5 @@
1
1
  # Namespace
2
2
  module ValidationProfiler
3
3
  # :nodoc:
4
- VERSION = '1.6.0'.freeze
4
+ VERSION = '1.7.0'.freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validation_profiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sage One
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-03 00:00:00.000000000 Z
11
+ date: 2019-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  requirements: []
143
- rubygems_version: 3.0.2
143
+ rubygems_version: 3.0.3
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: A Validation framework for creating validation profiles, allowing for the