nice_hash 1.12.8 → 1.12.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -3
- data/lib/nice_hash.rb +34 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bff78c12a5f0b46e46eb9f2af18c66d570dfa51b9c45ac2a6600939c8387f28
|
4
|
+
data.tar.gz: d92ba9acd53a8f288a1be13a9d50c6f0924ae72168bdafb32dcf4e097e12e269
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e89e0412ce972946f6b2ec5e2df538849d492d45c716cf23ee538ddb44082004db33f9b23ea778ce249fcc44140d896e1ec82f972fcf80e71bcffe7926385e39
|
7
|
+
data.tar.gz: 77a9745af901aafc25463b3569d7870fa4621307a107870c3a71bc40086a060840587f1096ecc66ae0eb0205db8255c8a901f0c6ffa8f2b3fc2ee411d83f21cc
|
data/README.md
CHANGED
@@ -53,6 +53,8 @@ my_hash={
|
|
53
53
|
loginame: :"5-10:/xn/",
|
54
54
|
[:pwd1, :pwd2, :pwd3] => :"5-10:L/n/",
|
55
55
|
name: :"10-20:T_/x/",
|
56
|
+
age: 18..120,
|
57
|
+
euros: 0.0..3000.0,
|
56
58
|
draws: [
|
57
59
|
{
|
58
60
|
drawId: :"5:N",
|
@@ -92,6 +94,8 @@ Explanations of the different fields:
|
|
92
94
|
loginname: from 5 to 10 characters, mandatory to have lower letters and numbers
|
93
95
|
pwd, pwd2, pwd3: will have the same value. The value from 5 to 10 chars, optional capital and lower letters, necessary to contain numbers
|
94
96
|
name: from 10 to 20 chars. Optional national characters and space, necessary lower letters.
|
97
|
+
age: number from 18 to 120
|
98
|
+
euros: float number from 0.0 to 3000.0
|
95
99
|
drawId: 5 numbers
|
96
100
|
drawName: 10 letters and/or numbers
|
97
101
|
type: 'Weekely' or 'Daily'
|
@@ -236,6 +240,8 @@ On this example new_hash will contain:
|
|
236
240
|
loginame: :"5-10:/xn/",
|
237
241
|
[:pwd1, :pwd2, :pwd3] => :"5-10:L/n/",
|
238
242
|
name: :"10-20:T_/x/",
|
243
|
+
age: 18..120,
|
244
|
+
euros: 0.0..3000.0,
|
239
245
|
draws: [
|
240
246
|
{
|
241
247
|
drawId: :"5:N",
|
@@ -294,6 +300,8 @@ In case of filtering by :correct new_hash would have a value like this for examp
|
|
294
300
|
:pwd2=>"E6hz9YS7",
|
295
301
|
:pwd3=>"E6hz9YS7",
|
296
302
|
:name=>"OyTQNfEyPOzVYMxPym",
|
303
|
+
:age=> 19,
|
304
|
+
:euros=> 2133.34,
|
297
305
|
:draws=>
|
298
306
|
[{:drawId=>"54591",
|
299
307
|
:drawName=>"cr5Q7pq4G8",
|
@@ -351,6 +359,8 @@ On this example wrong_min_length will contain something like:
|
|
351
359
|
:pwd2=>"4XDx",
|
352
360
|
:pwd3=>"4XDx",
|
353
361
|
:name=>"bU",
|
362
|
+
:age=> 5,
|
363
|
+
:euros=> -452.311,
|
354
364
|
:draws=>
|
355
365
|
[{:drawId=>"", :drawName=>"P03AgdMqV", :type=>"Dail", :owner=>"dYzLRMCnVc"},
|
356
366
|
{:drawId=>"", :drawName=>"qw", :type=>"Dail", :owner=>"zkHhTEzM"}],
|
@@ -485,6 +495,8 @@ After using the bury method default_values will contain:
|
|
485
495
|
:pwd2=>"x33exx",
|
486
496
|
:pwd3=>"x33exx",
|
487
497
|
:name=>"HdmsjLxlEgYIFY",
|
498
|
+
:age=> 20,
|
499
|
+
:euros=> 155.11,
|
488
500
|
:draws=>
|
489
501
|
[{:drawId=>"12318",
|
490
502
|
:drawName=>"FirstDraw",
|
@@ -508,16 +520,19 @@ After using the bury method default_values will contain:
|
|
508
520
|
|
509
521
|
If you have a Hash that should follow the patterns you specified (in this example declared on my_hash) and you want to validate, then use the 'validate' method.
|
510
522
|
|
511
|
-
This is
|
523
|
+
This is specially useful to test REST APIs responses in JSON
|
512
524
|
|
513
525
|
If we have a hash with these values:
|
514
526
|
|
515
527
|
```ruby
|
516
|
-
{
|
528
|
+
values = {
|
529
|
+
:loginame=>"rdewvqur",
|
517
530
|
:pwd1=>"d3ulo",
|
518
531
|
:pwd2=>"d3ulo",
|
519
532
|
:pwd3=>"d3ulo",
|
520
533
|
:name=>"LTqVKxxFCTqpkdjFkxU",
|
534
|
+
:age=> 20,
|
535
|
+
:euros=> 155.11,
|
521
536
|
:draws=>
|
522
537
|
[{:drawId=>"54a43",
|
523
538
|
:drawName=>"h3F24yjMWp",
|
@@ -537,7 +552,7 @@ If we have a hash with these values:
|
|
537
552
|
:display=>true}
|
538
553
|
```
|
539
554
|
|
540
|
-
To validate those values
|
555
|
+
To validate those values against the patterns defined on my_hash:
|
541
556
|
|
542
557
|
```ruby
|
543
558
|
results_all_fields = my_hash.validate :correct, values
|
data/lib/nice_hash.rb
CHANGED
@@ -359,9 +359,7 @@ class NiceHash
|
|
359
359
|
else
|
360
360
|
value = NiceHash.generate(value, select_hash_key, expected_errors: expected_errors)
|
361
361
|
end
|
362
|
-
|
363
|
-
|
364
|
-
if value.kind_of?(String) or value.kind_of?(Symbol)
|
362
|
+
elsif value.kind_of?(String) or value.kind_of?(Symbol)
|
365
363
|
if ((StringPattern.optimistic and value.kind_of?(String)) or value.kind_of?(Symbol)) and value.to_s.scan(/^!?\d+-?\d*:.+/).size > 0
|
366
364
|
hashv[key] = StringPattern.generate(value, expected_errors: expected_errors)
|
367
365
|
elsif ((StringPattern.optimistic and value.kind_of?(String)) or value.kind_of?(Symbol)) and value.to_s.scan(/^([\w\s\-]+\|)+[\w\s\-]+$/).size > 0
|
@@ -415,10 +413,31 @@ class NiceHash
|
|
415
413
|
}
|
416
414
|
hashv[key] = value_ret
|
417
415
|
end
|
416
|
+
elsif value.kind_of?(Range)
|
417
|
+
if expected_errors.empty?
|
418
|
+
hashv[key] = rand(value)
|
419
|
+
else
|
420
|
+
hashv[key] = rand(value)
|
421
|
+
expected_errors.each do |er|
|
422
|
+
if er == :min_length
|
423
|
+
hashv[key] = rand((value.first-value.last)..value.first-1)
|
424
|
+
elsif er == :max_length
|
425
|
+
hashv[key] = rand((value.last+1)..(value.last*2))
|
426
|
+
elsif er == :length
|
427
|
+
if rand.round==1
|
428
|
+
hashv[key] = rand((value.first-value.last)..value.first-1)
|
429
|
+
else
|
430
|
+
hashv[key] = rand((value.last+1)..(value.last*2))
|
431
|
+
end
|
432
|
+
elsif er == :value
|
433
|
+
hashv[key] = :"1-10:N/L/".gen
|
434
|
+
end
|
435
|
+
end
|
436
|
+
end
|
418
437
|
elsif value.kind_of?(Proc)
|
419
438
|
hashv[key] = value.call
|
420
439
|
elsif value.kind_of?(Regexp)
|
421
|
-
hashv[key] = value.generate
|
440
|
+
hashv[key] = value.generate(expected_errors: expected_errors)
|
422
441
|
else
|
423
442
|
hashv[key] = value
|
424
443
|
end
|
@@ -523,6 +542,17 @@ class NiceHash
|
|
523
542
|
elsif !only_patterns
|
524
543
|
results[key] = false unless value.to_s == values[key].to_s
|
525
544
|
end
|
545
|
+
elsif value.kind_of?(Range)
|
546
|
+
if values[key].class != value.first.class or values[key].class != value.last.class
|
547
|
+
results[key] = false
|
548
|
+
elsif values[key] < value.first or values[key] > value.last
|
549
|
+
results[key] = false
|
550
|
+
end
|
551
|
+
elsif value.kind_of?(Regexp)
|
552
|
+
rex = Regexp.new("^#{value}$")
|
553
|
+
unless values[key].match?(rex)
|
554
|
+
results[key] = false
|
555
|
+
end
|
526
556
|
elsif value.kind_of?(Array)
|
527
557
|
array_pattern = false
|
528
558
|
complex_data = false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nice_hash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.12.
|
4
|
+
version: 1.12.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: string_pattern
|