validation_profiler 0.1.11 → 0.2.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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27176d2061e3c1cc5b60ad63f95b37f0f94b3997
|
4
|
+
data.tar.gz: c086eb080473ac0f0cb95d7e3ef7c18b2dbfd0cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5da629eb13fa60d7cc371f65550781b956d0c2b6be6bfa721899c86b455ba2e1ad83eadad8071a8511788e633d9355a9f06a57c4500624c564e86a5597a13c9e
|
7
|
+
data.tar.gz: a38bcf9271b406d33a8759380a305c336decf4ef8161163ceafd0078801779f684a7f9c51b7e29873cfa4662b77429682f013fb8b4d64933b25c0d26ecaeed47
|
@@ -84,25 +84,30 @@ end
|
|
84
84
|
|
85
85
|
class LengthValidationRule < ValidationRule
|
86
86
|
|
87
|
-
def error_message(field, attributes)
|
87
|
+
def error_message(field, attributes, parent = nil)
|
88
|
+
field_name = field.to_s
|
89
|
+
if parent != nil
|
90
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
91
|
+
end
|
92
|
+
|
88
93
|
#check if a custom error message has been specified in the attributes
|
89
94
|
if attributes[:message] == nil
|
90
95
|
#no custom error message has been specified so create the default message.
|
91
96
|
min = attributes[:min]
|
92
97
|
max = attributes[:max]
|
93
98
|
if min && max
|
94
|
-
"#{
|
99
|
+
"#{field_name} must have a min length of #{min} and a max length of #{max}"
|
95
100
|
elsif min
|
96
|
-
"#{
|
101
|
+
"#{field_name} must have a min length of #{min}"
|
97
102
|
else
|
98
|
-
"#{
|
103
|
+
"#{field_name} must have a max length of #{max}"
|
99
104
|
end
|
100
105
|
else
|
101
106
|
attributes[:message]
|
102
107
|
end
|
103
108
|
end
|
104
109
|
|
105
|
-
def validate(obj, field, attributes)
|
110
|
+
def validate(obj, field, attributes, parent = nil)
|
106
111
|
|
107
112
|
min = attributes[:min]
|
108
113
|
max = attributes[:max]
|
@@ -142,18 +147,24 @@ end
|
|
142
147
|
|
143
148
|
class MinValidationRule < ValidationRule
|
144
149
|
|
145
|
-
def error_message(field, attributes)
|
150
|
+
def error_message(field, attributes, parent = nil)
|
151
|
+
|
152
|
+
field_name = field.to_s
|
153
|
+
if parent != nil
|
154
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
155
|
+
end
|
156
|
+
|
146
157
|
#check if a custom error message has been specified in the attributes
|
147
158
|
if attributes[:message] == nil
|
148
159
|
#no custom error message has been specified so create the default message.
|
149
160
|
min = attributes[:value]
|
150
|
-
"#{
|
161
|
+
"#{field_name} must have a minimum value of #{min}"
|
151
162
|
else
|
152
163
|
attributes[:message]
|
153
164
|
end
|
154
165
|
end
|
155
166
|
|
156
|
-
def validate(obj, field, attributes)
|
167
|
+
def validate(obj, field, attributes, parent = nil)
|
157
168
|
|
158
169
|
min = attributes[:value]
|
159
170
|
|
@@ -169,6 +180,10 @@ class MinValidationRule < ValidationRule
|
|
169
180
|
return true
|
170
181
|
end
|
171
182
|
|
183
|
+
if field_value == nil
|
184
|
+
return false
|
185
|
+
end
|
186
|
+
|
172
187
|
if field_value.is_a?(DateTime) || field_value.is_a?(Numeric)
|
173
188
|
field_value >= min
|
174
189
|
else
|
@@ -181,18 +196,24 @@ end
|
|
181
196
|
|
182
197
|
class MaxValidationRule < ValidationRule
|
183
198
|
|
184
|
-
def error_message(field, attributes)
|
199
|
+
def error_message(field, attributes, parent = nil)
|
200
|
+
|
201
|
+
field_name = field.to_s
|
202
|
+
if parent != nil
|
203
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
204
|
+
end
|
205
|
+
|
185
206
|
#check if a custom error message has been specified in the attributes
|
186
207
|
if attributes[:message] == nil
|
187
208
|
#no custom error message has been specified so create the default message.
|
188
209
|
max = attributes[:value]
|
189
|
-
"#{
|
210
|
+
"#{field_name} must not have a value greater than #{max}"
|
190
211
|
else
|
191
212
|
attributes[:message]
|
192
213
|
end
|
193
214
|
end
|
194
215
|
|
195
|
-
def validate(obj, field, attributes)
|
216
|
+
def validate(obj, field, attributes, parent = nil)
|
196
217
|
|
197
218
|
max = attributes[:value]
|
198
219
|
|
@@ -208,6 +229,10 @@ class MaxValidationRule < ValidationRule
|
|
208
229
|
return true
|
209
230
|
end
|
210
231
|
|
232
|
+
if field_value == nil
|
233
|
+
return false
|
234
|
+
end
|
235
|
+
|
211
236
|
if field_value.is_a?(DateTime) || field_value.is_a?(Numeric)
|
212
237
|
field_value <= max
|
213
238
|
else
|
@@ -220,18 +245,24 @@ end
|
|
220
245
|
|
221
246
|
class RequiredValidationRule < ValidationRule
|
222
247
|
|
223
|
-
def error_message(field, attributes = {})
|
248
|
+
def error_message(field, attributes = {}, parent = nil)
|
249
|
+
|
250
|
+
field_name = field.to_s
|
251
|
+
if parent != nil
|
252
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
253
|
+
end
|
254
|
+
|
224
255
|
#check if a custom error message has been specified in the attributes
|
225
256
|
if attributes[:message] == nil
|
226
257
|
#no custom error message has been specified so create the default message.
|
227
|
-
"#{
|
258
|
+
"#{field_name} is required"
|
228
259
|
else
|
229
260
|
attributes[:message]
|
230
261
|
end
|
231
262
|
end
|
232
263
|
|
233
264
|
|
234
|
-
def validate(obj, field, attributes = {})
|
265
|
+
def validate(obj, field, attributes = {}, parent = nil)
|
235
266
|
|
236
267
|
#attempt to get the field value from the object
|
237
268
|
field_value = get_field_value(obj, field)
|
@@ -254,18 +285,24 @@ class EmailValidationRule < ValidationRule
|
|
254
285
|
|
255
286
|
REGEX = /^[^@]+@[^@]+\.[^@]+$/
|
256
287
|
|
257
|
-
def error_message(field, attributes = {})
|
288
|
+
def error_message(field, attributes = {}, parent = nil)
|
289
|
+
|
290
|
+
field_name = field.to_s
|
291
|
+
if parent != nil
|
292
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
293
|
+
end
|
294
|
+
|
258
295
|
#check if a custom error message has been specified in the attributes
|
259
296
|
if attributes[:message] == nil
|
260
297
|
#no custom error message has been specified so create the default message.
|
261
|
-
"#{
|
298
|
+
"#{field_name} is not a valid email address"
|
262
299
|
else
|
263
300
|
attributes[:message]
|
264
301
|
end
|
265
302
|
end
|
266
303
|
|
267
304
|
|
268
|
-
def validate(obj, field, attributes = {})
|
305
|
+
def validate(obj, field, attributes = {}, parent = nil)
|
269
306
|
|
270
307
|
#attempt to get the field value from the object
|
271
308
|
field_value = get_field_value(obj, field)
|
@@ -287,18 +324,24 @@ end
|
|
287
324
|
|
288
325
|
class RegexValidationRule < ValidationRule
|
289
326
|
|
290
|
-
def error_message(field, attributes = {})
|
327
|
+
def error_message(field, attributes = {}, parent = nil)
|
328
|
+
|
329
|
+
field_name = field.to_s
|
330
|
+
if parent != nil
|
331
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
332
|
+
end
|
333
|
+
|
291
334
|
#check if a custom error message has been specified in the attributes
|
292
335
|
if attributes[:message] == nil
|
293
336
|
#no custom error message has been specified so create the default message.
|
294
|
-
"#{
|
337
|
+
"#{field_name} is not a valid"
|
295
338
|
else
|
296
339
|
attributes[:message]
|
297
340
|
end
|
298
341
|
end
|
299
342
|
|
300
343
|
|
301
|
-
def validate(obj, field, attributes)
|
344
|
+
def validate(obj, field, attributes, parent = nil)
|
302
345
|
|
303
346
|
#attempt to get the field value from the object
|
304
347
|
field_value = get_field_value(obj, field)
|
@@ -325,21 +368,26 @@ end
|
|
325
368
|
|
326
369
|
class MatchValidationRule < ValidationRule
|
327
370
|
|
328
|
-
def error_message(field, attributes)
|
371
|
+
def error_message(field, attributes, parent = nil)
|
372
|
+
|
373
|
+
field_name = field.to_s
|
374
|
+
if parent != nil
|
375
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
376
|
+
end
|
329
377
|
|
330
378
|
match_field = attributes[:field]
|
331
379
|
|
332
380
|
#check if a custom error message has been specified in the attributes
|
333
381
|
if attributes[:message] == nil
|
334
382
|
#no custom error message has been specified so create the default message.
|
335
|
-
"#{
|
383
|
+
"#{field_name} does not match #{match_field}"
|
336
384
|
else
|
337
385
|
attributes[:message]
|
338
386
|
end
|
339
387
|
end
|
340
388
|
|
341
389
|
|
342
|
-
def validate(obj, field, attributes)
|
390
|
+
def validate(obj, field, attributes, parent = nil)
|
343
391
|
|
344
392
|
#attempt to get the field value from the object
|
345
393
|
field_value = get_field_value(obj, field)
|
@@ -363,21 +411,24 @@ end
|
|
363
411
|
|
364
412
|
class ConditionValidationRule < ValidationRule
|
365
413
|
|
366
|
-
def error_message(field, attributes = {})
|
414
|
+
def error_message(field, attributes = {}, parent = nil)
|
367
415
|
|
368
|
-
|
416
|
+
field_name = field.to_s
|
417
|
+
if parent != nil
|
418
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
419
|
+
end
|
369
420
|
|
370
421
|
#check if a custom error message has been specified in the attributes
|
371
422
|
if attributes[:message] == nil
|
372
423
|
#no custom error message has been specified so create the default message.
|
373
|
-
"#{
|
424
|
+
"#{field_name} is not valid"
|
374
425
|
else
|
375
426
|
attributes[:message]
|
376
427
|
end
|
377
428
|
end
|
378
429
|
|
379
430
|
|
380
|
-
def validate(obj, field, attributes)
|
431
|
+
def validate(obj, field, attributes, parent = nil)
|
381
432
|
|
382
433
|
#attempt to get the field value from the object
|
383
434
|
value = get_field_value(obj, field)
|
@@ -450,18 +501,24 @@ end
|
|
450
501
|
|
451
502
|
class NotAllowedValidationRule < ValidationRule
|
452
503
|
|
453
|
-
def error_message(field, attributes = {})
|
504
|
+
def error_message(field, attributes = {}, parent = nil)
|
505
|
+
|
506
|
+
field_name = field.to_s
|
507
|
+
if parent != nil
|
508
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
509
|
+
end
|
510
|
+
|
454
511
|
#check if a custom error message has been specified in the attributes
|
455
512
|
if attributes[:message] == nil
|
456
513
|
#no custom error message has been specified so create the default message.
|
457
|
-
"#{
|
514
|
+
"#{field_name} is not allowed."
|
458
515
|
else
|
459
516
|
attributes[:message]
|
460
517
|
end
|
461
518
|
end
|
462
519
|
|
463
520
|
|
464
|
-
def validate(obj, field, attributes = {})
|
521
|
+
def validate(obj, field, attributes = {}, parent = nil)
|
465
522
|
|
466
523
|
#attempt to get the field value from the object
|
467
524
|
field_value = get_field_value(obj, field)
|
@@ -478,18 +535,24 @@ end
|
|
478
535
|
|
479
536
|
class ListValidationRule < ValidationRule
|
480
537
|
|
481
|
-
def error_message(field, attributes = {})
|
538
|
+
def error_message(field, attributes = {}, parent = nil)
|
539
|
+
|
540
|
+
field_name = field.to_s
|
541
|
+
if parent != nil
|
542
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
543
|
+
end
|
544
|
+
|
482
545
|
#check if a custom error message has been specified in the attributes
|
483
546
|
if attributes[:message] == nil
|
484
547
|
#no custom error message has been specified so create the default message.
|
485
|
-
"#{
|
548
|
+
"#{field_name} is not an accepted value."
|
486
549
|
else
|
487
550
|
attributes[:message]
|
488
551
|
end
|
489
552
|
end
|
490
553
|
|
491
554
|
|
492
|
-
def validate(obj, field, attributes = {})
|
555
|
+
def validate(obj, field, attributes = {}, parent = nil)
|
493
556
|
|
494
557
|
#attempt to get the field value from the object
|
495
558
|
field_value = get_field_value(obj, field)
|
@@ -498,6 +561,10 @@ class ListValidationRule < ValidationRule
|
|
498
561
|
return true
|
499
562
|
end
|
500
563
|
|
564
|
+
if field_value == nil
|
565
|
+
return false
|
566
|
+
end
|
567
|
+
|
501
568
|
list = attributes[:list]
|
502
569
|
if list == nil || !list.is_a?(Array)
|
503
570
|
raise InvalidRuleAttributes.new(ListValidationRule, field)
|
@@ -511,4 +578,55 @@ class ListValidationRule < ValidationRule
|
|
511
578
|
|
512
579
|
end
|
513
580
|
|
581
|
+
end
|
582
|
+
|
583
|
+
class ChildValidationRule < ValidationRule
|
584
|
+
|
585
|
+
def initialize
|
586
|
+
@validation_manager = ValidationManager.new
|
587
|
+
end
|
588
|
+
|
589
|
+
def error_message(field, attributes = {}, parent = nil)
|
590
|
+
|
591
|
+
field_name = field.to_s
|
592
|
+
if parent != nil
|
593
|
+
field_name = "#{parent.to_s}.#{field.to_s}"
|
594
|
+
end
|
595
|
+
|
596
|
+
#check if a custom error message has been specified in the attributes
|
597
|
+
if attributes[:message] == nil
|
598
|
+
#no custom error message has been specified so create the default message.
|
599
|
+
"#{field_name} is required."
|
600
|
+
else
|
601
|
+
attributes[:message]
|
602
|
+
end
|
603
|
+
end
|
604
|
+
|
605
|
+
def validate(obj, field, attributes = {}, parent = nil)
|
606
|
+
|
607
|
+
#attempt to get the field value from the object
|
608
|
+
field_value = get_field_value(obj, field)
|
609
|
+
|
610
|
+
if !is_required?(field_value, attributes)
|
611
|
+
return true
|
612
|
+
end
|
613
|
+
|
614
|
+
profile = attributes[:profile]
|
615
|
+
if profile == nil
|
616
|
+
raise InvalidRuleAttributes.new(ChildValidationRule, field)
|
617
|
+
end
|
618
|
+
|
619
|
+
if field_value == nil
|
620
|
+
return false
|
621
|
+
end
|
622
|
+
|
623
|
+
parent_field = field.to_s
|
624
|
+
if parent != nil
|
625
|
+
parent_field = "#{parent.to_s}.#{field.to_s}"
|
626
|
+
end
|
627
|
+
|
628
|
+
return @validation_manager.validate(field_value, profile, parent_field)
|
629
|
+
|
630
|
+
end
|
631
|
+
|
514
632
|
end
|
@@ -64,6 +64,7 @@ class ValidationRuleManager
|
|
64
64
|
@rules.push({ key: :condition, instance: ConditionValidationRule.new })
|
65
65
|
@rules.push({ key: :not_allowed, instance: NotAllowedValidationRule.new })
|
66
66
|
@rules.push({ key: :list, instance: ListValidationRule.new })
|
67
|
+
@rules.push({ key: :child, instance: ChildValidationRule.new })
|
67
68
|
|
68
69
|
end
|
69
70
|
|
data/lib/validation_profiler.rb
CHANGED
@@ -36,7 +36,7 @@ class ValidationManager
|
|
36
36
|
# @param profile [ClassName] The class name of the validation profile to validate against
|
37
37
|
#
|
38
38
|
# @return [ValidationManagerResult] The result of the validation
|
39
|
-
def validate(obj, profile)
|
39
|
+
def validate(obj, profile, parent = nil)
|
40
40
|
|
41
41
|
result = ValidationManagerResult.new
|
42
42
|
|
@@ -49,11 +49,13 @@ class ValidationManager
|
|
49
49
|
end
|
50
50
|
|
51
51
|
rule = ValidationRuleManager.instance.get_rule(r[:name])
|
52
|
-
outcome = rule.validate(obj, r[:field], r[:attributes])
|
52
|
+
outcome = rule.validate(obj, r[:field], r[:attributes], parent)
|
53
53
|
|
54
|
-
if
|
54
|
+
if outcome.is_a?(ValidationManagerResult)
|
55
|
+
result = outcome
|
56
|
+
elsif !outcome
|
55
57
|
result.outcome = false
|
56
|
-
result.errors.push({ field: r[:field], message: rule.error_message(r[:field], r[:attributes]) })
|
58
|
+
result.errors.push({ field: r[:field], message: rule.error_message(r[:field], r[:attributes], parent) })
|
57
59
|
end
|
58
60
|
|
59
61
|
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: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vaughanbrittonsage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|