flash_validators 1.1.0 → 3.0.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 +4 -4
- data/README.md +258 -35
- data/config/locales/en.yml +66 -42
- data/lib/flash_validators/matchers/ensure_valid_alpha_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_alpha_numeric_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_base64_format_of.rb +26 -0
- data/lib/flash_validators/matchers/ensure_valid_boolean_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_credit_card_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_currency_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_cusip_format_of.rb +26 -0
- data/lib/flash_validators/matchers/ensure_valid_email_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_equality_matcher_of.rb +12 -2
- data/lib/flash_validators/matchers/ensure_valid_gtin_format_of.rb +26 -0
- data/lib/flash_validators/matchers/ensure_valid_hex_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_imei_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_ip_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_isbn_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_isin_format_of.rb +26 -0
- data/lib/flash_validators/matchers/ensure_valid_latitude_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_longitude_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_mac_address_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_name_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_password_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_phone_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_sedol_format_of.rb +26 -0
- data/lib/flash_validators/matchers/ensure_valid_slug_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_ssn_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_url_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_username_format_of.rb +10 -2
- data/lib/flash_validators/matchers/ensure_valid_uuid_format_of.rb +26 -0
- data/lib/flash_validators/validators/alpha_numeric_validator.rb +21 -7
- data/lib/flash_validators/validators/alpha_validator.rb +22 -10
- data/lib/flash_validators/validators/base64_validator.rb +9 -0
- data/lib/flash_validators/validators/credit_card_validator.rb +123 -15
- data/lib/flash_validators/validators/currency_validator.rb +13 -7
- data/lib/flash_validators/validators/cusip_validator.rb +33 -0
- data/lib/flash_validators/validators/email_validator.rb +7 -7
- data/lib/flash_validators/validators/equality_validator.rb +7 -7
- data/lib/flash_validators/validators/gtin_validator.rb +59 -0
- data/lib/flash_validators/validators/hex_validator.rb +1 -1
- data/lib/flash_validators/validators/imei_validator.rb +8 -8
- data/lib/flash_validators/validators/isbn_validator.rb +9 -16
- data/lib/flash_validators/validators/isin_validator.rb +38 -0
- data/lib/flash_validators/validators/mac_address_validator.rb +10 -10
- data/lib/flash_validators/validators/password_validator.rb +13 -7
- data/lib/flash_validators/validators/sedol_validator.rb +32 -0
- data/lib/flash_validators/validators/url_validator.rb +13 -13
- data/lib/flash_validators/validators/uuid_validator.rb +28 -0
- data/lib/flash_validators/version.rb +1 -1
- data/lib/flash_validators.rb +12 -0
- data/spec/lib/alpha_numeric_validator_spec.rb +31 -1
- data/spec/lib/alpha_validator_spec.rb +68 -6
- data/spec/lib/base64_validator_spec.rb +33 -0
- data/spec/lib/credit_card_validator_spec.rb +495 -125
- data/spec/lib/cusip_validator_spec.rb +27 -0
- data/spec/lib/gtin_validator_spec.rb +101 -0
- data/spec/lib/hex_validator_spec.rb +20 -0
- data/spec/lib/isin_validator_spec.rb +35 -0
- data/spec/lib/sedol_validator_spec.rb +31 -0
- data/spec/lib/uuid_validator_spec.rb +157 -0
- metadata +26 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4150ee9e67b137e4e05e7087f63bbd6b5957fe17
|
4
|
+
data.tar.gz: bf4b5c433dbee35418a093e7727ce88d441880e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d9d77e2859702d00a11cf7c8f94aee316a87a55a87bb0159722f27a900db06068a20a6787b7efccdf20a934b88dc6dea52ff5193a7dd60d3d9c2f13e55c51be
|
7
|
+
data.tar.gz: d9951b4694622675d29881b428b06e74996f5d3b919ab0a8b2cef5c8c49bbc039c6dc911f58969cff1c66e5e75a40f12e24ac60dde34a73a4aee2a4906599252
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
Flash Validators is a collection of custom validators that are often required in Rails applications plus shoulda-style RSpec matchers to test the validation rules.
|
9
9
|
|
10
|
-
Currently supported validators: alpha, alpha-numeric, boolean, credit card, currency, email, equality, hex, IMEI, IP, ISBN, latitude, longitude,
|
10
|
+
Currently supported validators: alpha, alpha-numeric, Base64, boolean, credit card, currency, CUSIP, email, equality, GTIN, hex, IMEI, IP, ISBN, ISIN, latitude, longitude, MAC address, name, password, phone, SEDOL, slug, SSN, url, username, and UUID.
|
11
11
|
|
12
12
|
Highly recommended validators:
|
13
13
|
* **DateTime:** Validates Timeliness - https://github.com/adzap/validates_timeliness
|
@@ -58,18 +58,18 @@ class Book
|
|
58
58
|
end
|
59
59
|
```
|
60
60
|
|
61
|
-
Options: :strict, :
|
61
|
+
Options: :strict, case: [:lower, :upper]
|
62
62
|
|
63
63
|
```ruby
|
64
64
|
validates :title, alpha: { strict: true }
|
65
|
-
validates :title, alpha: {
|
66
|
-
validates :title, alpha: {
|
65
|
+
validates :title, alpha: { case: :lower }
|
66
|
+
validates :title, alpha: { case: :upper, strict: true }
|
67
67
|
```
|
68
68
|
|
69
69
|
RSpec matcher is also available for your convenience:
|
70
70
|
|
71
71
|
```ruby
|
72
|
-
describe
|
72
|
+
describe Book do
|
73
73
|
it { should ensure_valid_alpha_format_of(:title) }
|
74
74
|
it { should_not ensure_valid_alpha_format_of(:name) }
|
75
75
|
end
|
@@ -102,6 +102,7 @@ class Book
|
|
102
102
|
end
|
103
103
|
```
|
104
104
|
|
105
|
+
Options: :strict
|
105
106
|
Strict: requires not including spaces
|
106
107
|
|
107
108
|
```ruby
|
@@ -111,18 +112,54 @@ validates :title, alpha_numeric: { strict: true }
|
|
111
112
|
RSpec matcher is also available for your convenience:
|
112
113
|
|
113
114
|
```ruby
|
114
|
-
describe
|
115
|
+
describe Book do
|
115
116
|
it { should ensure_valid_alpha_numeric_format_of(:title) }
|
116
117
|
it { should_not ensure_valid_alpha_numeric_format_of(:name) }
|
117
118
|
end
|
118
119
|
```
|
119
120
|
|
121
|
+
### Base64Validator
|
122
|
+
|
123
|
+
**Ex:** YW55IGNhcm5hbCBwbGVhcw==
|
124
|
+
|
125
|
+
**Rules:**
|
126
|
+
* Characters: 0-1 A-Z =
|
127
|
+
|
128
|
+
With an ActiveRecord model:
|
129
|
+
|
130
|
+
```ruby
|
131
|
+
class Code < ActiveRecord::Base
|
132
|
+
attr_accessor :code, :name
|
133
|
+
validates :code, base64: true
|
134
|
+
end
|
135
|
+
```
|
136
|
+
|
137
|
+
Or any ruby class:
|
138
|
+
|
139
|
+
```ruby
|
140
|
+
class Code
|
141
|
+
include ActiveModel::Validations
|
142
|
+
attr_accessor :code, :name
|
143
|
+
validates :code, base64: true
|
144
|
+
end
|
145
|
+
```
|
146
|
+
|
147
|
+
RSpec matcher is also available for your convenience:
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
describe Code do
|
151
|
+
it { should ensure_valid_base64_format_of(:code) }
|
152
|
+
it { should_not ensure_valid_base64_format_of(:name) }
|
153
|
+
end
|
154
|
+
```
|
155
|
+
|
120
156
|
### BooleanValidator
|
121
157
|
|
122
158
|
**Ex:** true or false or 1 or 0
|
123
159
|
|
124
160
|
**Rules:**
|
125
|
-
* Characters: 0-1
|
161
|
+
* Characters: 0-1
|
162
|
+
* Equality: true or false
|
126
163
|
|
127
164
|
With an ActiveRecord model:
|
128
165
|
|
@@ -146,19 +183,20 @@ end
|
|
146
183
|
RSpec matcher is also available for your convenience:
|
147
184
|
|
148
185
|
```ruby
|
149
|
-
describe
|
186
|
+
describe User do
|
150
187
|
it { should ensure_valid_boolean_format_of(:active) }
|
151
188
|
it { should_not ensure_valid_boolean_format_of(:name) }
|
152
189
|
end
|
153
190
|
```
|
191
|
+
|
154
192
|
### CreditCardValidator
|
155
193
|
|
156
194
|
**Ex:** 370000000000002
|
157
195
|
|
158
196
|
**Rules:**
|
159
|
-
* Characters: 0-9
|
197
|
+
* Characters: 0-9 .-
|
160
198
|
* Must include: 0-9
|
161
|
-
* Range for card digits:
|
199
|
+
* Range for card digits: 12-19
|
162
200
|
|
163
201
|
With an ActiveRecord model:
|
164
202
|
|
@@ -179,15 +217,13 @@ class Invoice
|
|
179
217
|
end
|
180
218
|
```
|
181
219
|
|
182
|
-
Options: :american_express, :diners_club, :discover, :jbc, :
|
220
|
+
Options: :strict, card: [:american_express (:amex), :diners_club, :discover, :jbc, :laser, :maestro, :mastercard, :solo, :unionpay, :visa]
|
221
|
+
Strict: requires not including spaces
|
183
222
|
|
184
223
|
```ruby
|
185
|
-
validates :cc_number,
|
186
|
-
validates :cc_number,
|
187
|
-
validates :cc_number,
|
188
|
-
validates :cc_number, currency: { jbc: true }
|
189
|
-
validates :cc_number, currency: { master_card: true }
|
190
|
-
validates :cc_number, currency: { visa: true }
|
224
|
+
validates :cc_number, credit_card: { card: :visa }
|
225
|
+
validates :cc_number, credit_card: { strict: true }
|
226
|
+
validates :cc_number, credit_card: { card: :discover, strict: true }
|
191
227
|
```
|
192
228
|
|
193
229
|
RSpec matcher is also available for your convenience:
|
@@ -227,6 +263,7 @@ class Product
|
|
227
263
|
end
|
228
264
|
```
|
229
265
|
|
266
|
+
Options: :strict
|
230
267
|
Strict: requires leading number and exactly two decimals, 1.45
|
231
268
|
|
232
269
|
```ruby
|
@@ -242,6 +279,42 @@ describe Product do
|
|
242
279
|
end
|
243
280
|
```
|
244
281
|
|
282
|
+
### CusipValidator
|
283
|
+
|
284
|
+
**Ex:** 125509BG3
|
285
|
+
|
286
|
+
**Rules:**
|
287
|
+
* Characters: 0-1 A-Z
|
288
|
+
* Length: 1-9
|
289
|
+
|
290
|
+
With an ActiveRecord model:
|
291
|
+
|
292
|
+
```ruby
|
293
|
+
class Bank < ActiveRecord::Base
|
294
|
+
attr_accessor :code, :name
|
295
|
+
validates :code, cusip: true
|
296
|
+
end
|
297
|
+
```
|
298
|
+
|
299
|
+
Or any ruby class:
|
300
|
+
|
301
|
+
```ruby
|
302
|
+
class Bank
|
303
|
+
include ActiveModel::Validations
|
304
|
+
attr_accessor :code, :name
|
305
|
+
validates :code, cusip: true
|
306
|
+
end
|
307
|
+
```
|
308
|
+
|
309
|
+
RSpec matcher is also available for your convenience:
|
310
|
+
|
311
|
+
```ruby
|
312
|
+
describe Bank do
|
313
|
+
it { should ensure_valid_cusip_format_of(:code) }
|
314
|
+
it { should_not ensure_cusip_base64_format_of(:name) }
|
315
|
+
end
|
316
|
+
```
|
317
|
+
|
245
318
|
### EmailValidator
|
246
319
|
|
247
320
|
**Ex:** user@example.com or user+123@example-site.com
|
@@ -271,7 +344,7 @@ class User
|
|
271
344
|
end
|
272
345
|
```
|
273
346
|
|
274
|
-
|
347
|
+
Options: :domains
|
275
348
|
|
276
349
|
```ruby
|
277
350
|
validates :email, email: { domains: 'com' }
|
@@ -330,14 +403,59 @@ describe Auction do
|
|
330
403
|
end
|
331
404
|
```
|
332
405
|
|
406
|
+
### GtinValidator
|
407
|
+
|
408
|
+
**Ex:** 73513537 or 4 006381 33393 1
|
409
|
+
|
410
|
+
**Rules:**
|
411
|
+
* Length: 8, 12, 13, or 14
|
412
|
+
* Characters: 0-9
|
413
|
+
|
414
|
+
With an ActiveRecord model:
|
415
|
+
|
416
|
+
```ruby
|
417
|
+
class Trade < ActiveRecord::Base
|
418
|
+
attr_accessor :code, :name
|
419
|
+
validates :code, gtin: true
|
420
|
+
end
|
421
|
+
```
|
422
|
+
|
423
|
+
Or any ruby class:
|
424
|
+
|
425
|
+
```ruby
|
426
|
+
class Trade
|
427
|
+
include ActiveModel::Validations
|
428
|
+
attr_accessor :code, :name
|
429
|
+
validates :code, gtin: true
|
430
|
+
end
|
431
|
+
```
|
432
|
+
|
433
|
+
Options: :strict, format: [:ean_8, :gtin_8, :ucc_8, :gtin_12, :upc, :upc_a, :ean, :ean_13, :gtin_13, :ucc_13, :gtin_14, :ucc_14]
|
434
|
+
Strict: requires not including spaces
|
435
|
+
|
436
|
+
```ruby
|
437
|
+
validates :code, gtin: { format: :ean_8 }
|
438
|
+
validates :code, gtin: { strict: true }
|
439
|
+
validates :code, gtin: { format: :ucc_13, strict: true }
|
440
|
+
```
|
441
|
+
|
442
|
+
RSpec matcher is also available for your convenience:
|
443
|
+
|
444
|
+
```ruby
|
445
|
+
describe Trade do
|
446
|
+
it { should ensure_valid_gtin_format_of(:code) }
|
447
|
+
it { should_not ensure_valid_gtin_format_of(:name) }
|
448
|
+
end
|
449
|
+
```
|
450
|
+
|
333
451
|
### HexValidator
|
334
452
|
|
335
|
-
**Ex:** #a9a9a9 or #999 or aaaaaa
|
453
|
+
**Ex:** #a9a9a9 or #999 or aaaaaa or AAA
|
336
454
|
|
337
455
|
**Rules:**
|
338
456
|
* Prefix (non-mandatory): #
|
339
457
|
* Length: 3 or 6
|
340
|
-
* Characters: a-f 0-9
|
458
|
+
* Characters: A-F a-f 0-9
|
341
459
|
|
342
460
|
With an ActiveRecord model:
|
343
461
|
|
@@ -475,6 +593,43 @@ describe User do
|
|
475
593
|
end
|
476
594
|
```
|
477
595
|
|
596
|
+
### IsinValidator
|
597
|
+
|
598
|
+
**Ex:** US0378331005 or AU0000XVGZA3
|
599
|
+
|
600
|
+
**Rules:**
|
601
|
+
* Length: 12
|
602
|
+
* Characters: 0-9 A-Z
|
603
|
+
* Start: valid country code
|
604
|
+
|
605
|
+
With an ActiveRecord model:
|
606
|
+
|
607
|
+
```ruby
|
608
|
+
class Trade < ActiveRecord::Base
|
609
|
+
attr_accessor :isin, :name
|
610
|
+
validates :isin, isin: true
|
611
|
+
end
|
612
|
+
```
|
613
|
+
|
614
|
+
Or any ruby class:
|
615
|
+
|
616
|
+
```ruby
|
617
|
+
class User
|
618
|
+
include ActiveModel::Validations
|
619
|
+
attr_accessor :isin, :name
|
620
|
+
validates :isin, isin: true
|
621
|
+
end
|
622
|
+
```
|
623
|
+
|
624
|
+
RSpec matcher is also available for your convenience:
|
625
|
+
|
626
|
+
```ruby
|
627
|
+
describe User do
|
628
|
+
it { should ensure_valid_isin_format_of(:isin) }
|
629
|
+
it { should_not ensure_valid_isin_format_of(:name) }
|
630
|
+
end
|
631
|
+
```
|
632
|
+
|
478
633
|
### LatitudeValidator
|
479
634
|
|
480
635
|
**Ex:** 78.213 or -34.985
|
@@ -651,7 +806,7 @@ class User
|
|
651
806
|
validates :password, password: true
|
652
807
|
end
|
653
808
|
```
|
654
|
-
|
809
|
+
Options: :strict
|
655
810
|
Strict: requires length between 6 and 18, one number, lowercase, upcase letter
|
656
811
|
|
657
812
|
```ruby
|
@@ -702,6 +857,41 @@ describe User do
|
|
702
857
|
end
|
703
858
|
```
|
704
859
|
|
860
|
+
### SedolValidator
|
861
|
+
|
862
|
+
**Ex:** B0WNLY7
|
863
|
+
|
864
|
+
**Rules:**
|
865
|
+
* Characters: A-Z 0-9
|
866
|
+
|
867
|
+
With an ActiveRecord model:
|
868
|
+
|
869
|
+
```ruby
|
870
|
+
class Trade < ActiveRecord::Base
|
871
|
+
attr_accessor :sedol, :name
|
872
|
+
validates :sedol, sedol: true
|
873
|
+
end
|
874
|
+
```
|
875
|
+
|
876
|
+
Or any ruby class:
|
877
|
+
|
878
|
+
```ruby
|
879
|
+
class Trade
|
880
|
+
include ActiveModel::Validations
|
881
|
+
attr_accessor :sedol, :name
|
882
|
+
validates :sedol, sedol: true
|
883
|
+
end
|
884
|
+
```
|
885
|
+
|
886
|
+
RSpec matcher is also available for your convenience:
|
887
|
+
|
888
|
+
```ruby
|
889
|
+
describe Trade do
|
890
|
+
it { should ensure_valid_sedol_format_of(:sedol) }
|
891
|
+
it { should_not ensure_valid_sedol_format_of(:name) }
|
892
|
+
end
|
893
|
+
```
|
894
|
+
|
705
895
|
### SlugValidator
|
706
896
|
|
707
897
|
**Ex:** slug1234 or slug-1234
|
@@ -800,27 +990,19 @@ class User
|
|
800
990
|
end
|
801
991
|
```
|
802
992
|
|
803
|
-
|
993
|
+
Options: :domains, :root, :scheme
|
804
994
|
|
805
995
|
```ruby
|
996
|
+
validates :url, url: { scheme: :http }
|
997
|
+
validates :url, url: { scheme: [:http, 'https'] }
|
998
|
+
validates :url, url: { scheme: :http, root: true, domains: :com }
|
999
|
+
validates :url, url: { root: true }
|
1000
|
+
validates :url, url: { root: true, domains: :com }
|
806
1001
|
validates :url, url: { domains: 'com' }
|
807
1002
|
validates :url, url: { domains: :com }
|
808
1003
|
validates :url, url: { domains: [:com, 'edu'] }
|
809
1004
|
```
|
810
1005
|
|
811
|
-
You can specify if the URL should the site root:
|
812
|
-
|
813
|
-
```ruby
|
814
|
-
validates :url, url: { root: true }
|
815
|
-
```
|
816
|
-
|
817
|
-
You can specify the URL scheme:
|
818
|
-
|
819
|
-
```ruby
|
820
|
-
validates :url, url: { scheme: :http }
|
821
|
-
validates :url, url: { scheme: [:http, 'https'] }
|
822
|
-
```
|
823
|
-
|
824
1006
|
RSpec matcher is also available for your convenience:
|
825
1007
|
|
826
1008
|
```ruby
|
@@ -866,6 +1048,47 @@ describe User do
|
|
866
1048
|
end
|
867
1049
|
```
|
868
1050
|
|
1051
|
+
### UuidValidator
|
1052
|
+
|
1053
|
+
**Ex:** 886313e1-3b8a-5372-9b90-0c9aee199e5d
|
1054
|
+
|
1055
|
+
**Rules:**
|
1056
|
+
* Characters: A-Z a-z 0-9 -
|
1057
|
+
|
1058
|
+
With an ActiveRecord model:
|
1059
|
+
|
1060
|
+
```ruby
|
1061
|
+
class User < ActiveRecord::Base
|
1062
|
+
attr_accessor :uuid, :name
|
1063
|
+
validates :uuid, uuid: true
|
1064
|
+
end
|
1065
|
+
```
|
1066
|
+
|
1067
|
+
Or any ruby class:
|
1068
|
+
|
1069
|
+
```ruby
|
1070
|
+
class User
|
1071
|
+
include ActiveModel::Validations
|
1072
|
+
attr_accessor :uuid, :name
|
1073
|
+
validates :uuid, username: true
|
1074
|
+
end
|
1075
|
+
```
|
1076
|
+
|
1077
|
+
Options: :version
|
1078
|
+
|
1079
|
+
```ruby
|
1080
|
+
validates :uuid, uuid: { version: 3 }
|
1081
|
+
```
|
1082
|
+
|
1083
|
+
RSpec matcher is also available for your convenience:
|
1084
|
+
|
1085
|
+
```ruby
|
1086
|
+
describe User do
|
1087
|
+
it { should ensure_valid_uuid_format_of(:uuid) }
|
1088
|
+
it { should_not ensure_valid_uuid_format_of(:name) }
|
1089
|
+
end
|
1090
|
+
```
|
1091
|
+
|
869
1092
|
## Contributing
|
870
1093
|
|
871
1094
|
Your contribution is welcome.
|
data/config/locales/en.yml
CHANGED
@@ -3,87 +3,111 @@ en:
|
|
3
3
|
messages:
|
4
4
|
alpha: "is not a valid alpha characters"
|
5
5
|
alpha_numeric: "is not a valid alpha-numeric characters"
|
6
|
+
base64: "is not a valid Base64 encode"
|
6
7
|
boolean: "is not a valid boolean"
|
7
8
|
credit_card: "is not a valid credit card"
|
8
9
|
currency: "is not a valid currency"
|
10
|
+
cusip: "is not a valid CUSIP"
|
9
11
|
email: "is not a valid email"
|
10
12
|
equality: "is not %{operator} %{attr}"
|
13
|
+
gtin: "is not a valid GTIN"
|
11
14
|
hex: "is not a valid hex color"
|
12
15
|
imei: "is not a valid IMEI"
|
13
16
|
ip: "is not a valid IP"
|
14
17
|
isbn: "is not a valid ISBN"
|
18
|
+
isin: "is not a valid ISIN"
|
15
19
|
longitude: "is not a valid latitude"
|
16
20
|
longitude: "is not a valid longitude"
|
17
21
|
mac_address: "is not a valid MAC address"
|
18
22
|
name: "is not a valid name"
|
19
23
|
password: "is not a valid password"
|
20
24
|
phone: "is not a valid phone number"
|
25
|
+
sedol: "is not a valid SEDOL"
|
21
26
|
slug: "is not a valid slug"
|
22
27
|
ssn: "is not a valid social security number"
|
23
28
|
url: "is not a valid URL"
|
24
29
|
username: "is not a valid username"
|
30
|
+
uuid: "is not a valid UUID"
|
25
31
|
flash_validators:
|
26
32
|
matchers:
|
27
33
|
ensure_valid_alpha_format_of:
|
28
|
-
failure_message_for_should: "
|
29
|
-
failure_message_for_should_not: "
|
34
|
+
failure_message_for_should: "%{model} should ensure valid alpha format of attribute %{attr}"
|
35
|
+
failure_message_for_should_not: "%{model} should not ensure valid alpha format of attribute %{attr}"
|
30
36
|
ensure_valid_alpha_numeric_format_of:
|
31
|
-
failure_message_for_should: "
|
32
|
-
failure_message_for_should_not: "
|
37
|
+
failure_message_for_should: "%{model} should ensure valid alpha numeric format of attribute %{attr}"
|
38
|
+
failure_message_for_should_not: "%{model} should not ensure valid alpha numeric format of attribute %{attr}"
|
39
|
+
ensure_valid_base64_format_of:
|
40
|
+
failure_message_for_should: "%{model} should ensure valid Base64 encoded format of attribute %{attr}"
|
41
|
+
failure_message_for_should_not: "%{model} should not ensure valid Base64 encoded format of attribute %{attr}"
|
33
42
|
ensure_valid_boolean_format_of:
|
34
|
-
failure_message_for_should: "
|
35
|
-
failure_message_for_should_not: "
|
43
|
+
failure_message_for_should: "%{model} should ensure valid boolean format of attribute %{attr}"
|
44
|
+
failure_message_for_should_not: "%{model} should not ensure valid boolean format of attribute %{attr}"
|
36
45
|
ensure_valid_credit_card_format_of:
|
37
|
-
failure_message_for_should: "
|
38
|
-
failure_message_for_should_not: "
|
46
|
+
failure_message_for_should: "%{model} should ensure valid credit card format of attribute %{attr}"
|
47
|
+
failure_message_for_should_not: "%{model} should not ensure valid credit card format of attribute %{attr}"
|
39
48
|
ensure_valid_currency_format_of:
|
40
|
-
failure_message_for_should: "
|
41
|
-
failure_message_for_should_not: "
|
49
|
+
failure_message_for_should: "%{model} should ensure valid currency format of attribute %{attr}"
|
50
|
+
failure_message_for_should_not: "%{model} should not ensure valid currency format of attribute %{attr}"
|
51
|
+
ensure_valid_cusip_format_of:
|
52
|
+
failure_message_for_should: "%{model} should ensure valid CUSIP format of attribute %{attr}"
|
53
|
+
failure_message_for_should_not: "%{model} should not ensure valid CUSIP format of attribute %{attr}"
|
42
54
|
ensure_valid_email_format_of:
|
43
|
-
failure_message_for_should: "
|
44
|
-
failure_message_for_should_not: "
|
55
|
+
failure_message_for_should: "%{model} should ensure valid email format of attribute %{attr}"
|
56
|
+
failure_message_for_should_not: "%{model} should not ensure valid email format of attribute %{attr}"
|
45
57
|
ensure_valid_equality_format_of:
|
46
|
-
failure_message_for_should: "
|
47
|
-
failure_message_for_should_not: "
|
58
|
+
failure_message_for_should: "%{model} should ensure equality of %{operator} on attribute %{attr}"
|
59
|
+
failure_message_for_should_not: "%{model} should not ensure equality of %{operator} on attribute %{attr}"
|
60
|
+
ensure_valid_gtin_format_of:
|
61
|
+
failure_message_for_should: "%{model} should ensure valid GTIN format of attribute %{attr}"
|
62
|
+
failure_message_for_should_not: "%{model} should not ensure valid GTIN format of attribute %{attr}"
|
48
63
|
ensure_valid_hex_format_of:
|
49
|
-
failure_message_for_should: "
|
50
|
-
failure_message_for_should_not: "
|
64
|
+
failure_message_for_should: "%{model} should ensure valid hex format of attribute %{attr}"
|
65
|
+
failure_message_for_should_not: "%{model} should not ensure valid hex format of attribute %{attr}"
|
51
66
|
ensure_valid_imei_format_of:
|
52
|
-
failure_message_for_should: "
|
53
|
-
failure_message_for_should_not: "
|
67
|
+
failure_message_for_should: "%{model} should ensure valid IMEI address format of attribute %{attr}"
|
68
|
+
failure_message_for_should_not: "%{model} should not ensure valid IMEI address format of attribute %{attr}"
|
54
69
|
ensure_valid_ip_format_of:
|
55
|
-
failure_message_for_should: "
|
56
|
-
failure_message_for_should_not: "
|
70
|
+
failure_message_for_should: "%{model} should ensure valid IP address format of attribute %{attr}"
|
71
|
+
failure_message_for_should_not: "%{model} should not ensure valid IP address format of attribute %{attr}"
|
57
72
|
ensure_valid_isbn_format_of:
|
58
|
-
failure_message_for_should: "
|
59
|
-
failure_message_for_should_not: "
|
73
|
+
failure_message_for_should: "%{model} should ensure valid ISBN format of attribute %{attr}"
|
74
|
+
failure_message_for_should_not: "%{model} should not ensure valid ISBN format of attribute %{attr}"
|
75
|
+
ensure_valid_isin_format_of:
|
76
|
+
failure_message_for_should: "%{model} should ensure valid ISIN format of attribute %{attr}"
|
77
|
+
failure_message_for_should_not: "%{model} should not ensure valid ISIN format of attribute %{attr}"
|
60
78
|
ensure_valid_latitude_format_of:
|
61
|
-
failure_message_for_should: "
|
62
|
-
failure_message_for_should_not: "
|
79
|
+
failure_message_for_should: "%{model} should ensure valid latitude format of attribute %{attr}"
|
80
|
+
failure_message_for_should_not: "%{model} should not ensure valid latitude format of attribute %{attr}"
|
63
81
|
ensure_valid_longitude_format_of:
|
64
|
-
failure_message_for_should: "
|
65
|
-
failure_message_for_should_not: "
|
82
|
+
failure_message_for_should: "%{model} should ensure valid longitude format of attribute %{attr}"
|
83
|
+
failure_message_for_should_not: "%{model} should not ensure valid longitude format of attribute %{attr}"
|
66
84
|
ensure_valid_mac_address_format_of:
|
67
|
-
failure_message_for_should: "
|
68
|
-
failure_message_for_should_not: "
|
85
|
+
failure_message_for_should: "%{model} should ensure valid MAC address format of attribute %{attr}"
|
86
|
+
failure_message_for_should_not: "%{model} should not ensure valid MAC address format of attribute %{attr}"
|
69
87
|
ensure_valid_name_format_of:
|
70
|
-
failure_message_for_should: "
|
71
|
-
failure_message_for_should_not: "
|
88
|
+
failure_message_for_should: "%{model} should ensure valid name format of attribute %{attr}"
|
89
|
+
failure_message_for_should_not: "%{model} should not ensure valid name format of attribute %{attr}"
|
72
90
|
ensure_valid_password_format_of:
|
73
|
-
failure_message_for_should: "
|
74
|
-
failure_message_for_should_not: "
|
91
|
+
failure_message_for_should: "%{model} should ensure valid password format of attribute %{attr}"
|
92
|
+
failure_message_for_should_not: "%{model} should not ensure valid password format of attribute %{attr}"
|
75
93
|
ensure_valid_phone_format_of:
|
76
|
-
failure_message_for_should: "
|
77
|
-
failure_message_for_should_not: "
|
94
|
+
failure_message_for_should: "%{model} should ensure valid phone format of attribute %{attr}"
|
95
|
+
failure_message_for_should_not: "%{model} should not ensure valid phone format of attribute %{attr}"
|
96
|
+
ensure_valid_sedol_format_of:
|
97
|
+
failure_message_for_should: "%{model} should ensure valid SEDOL format of attribute %{attr}"
|
98
|
+
failure_message_for_should_not: "%{model} should not ensure valid SEDOL format of attribute %{attr}"
|
78
99
|
ensure_valid_slug_format_of:
|
79
|
-
failure_message_for_should: "
|
80
|
-
failure_message_for_should_not: "
|
100
|
+
failure_message_for_should: "%{model} should ensure valid slug format of attribute %{attr}"
|
101
|
+
failure_message_for_should_not: "%{model} should not ensure valid slug format of attribute %{attr}"
|
81
102
|
ensure_valid_ssn_format_of:
|
82
|
-
failure_message_for_should: "
|
83
|
-
failure_message_for_should_not: "
|
103
|
+
failure_message_for_should: "%{model} should ensure valid SSN format of attribute %{attr}"
|
104
|
+
failure_message_for_should_not: "%{model} should not ensure valid SSN format of attribute %{attr}"
|
84
105
|
ensure_valid_url_format_of:
|
85
|
-
failure_message_for_should: "
|
86
|
-
failure_message_for_should_not: "
|
106
|
+
failure_message_for_should: "%{model} should ensure valid URL format of attribute %{attr}"
|
107
|
+
failure_message_for_should_not: "%{model} should not ensure valid URL format of attribute %{attr}"
|
87
108
|
ensure_valid_username_format_of:
|
88
|
-
failure_message_for_should: "
|
89
|
-
failure_message_for_should_not: "
|
109
|
+
failure_message_for_should: "%{model} should ensure valid username format of attribute %{attr}"
|
110
|
+
failure_message_for_should_not: "%{model} should not ensure valid username format of attribute %{attr}"
|
111
|
+
ensure_valid_uuid_format_of:
|
112
|
+
failure_message_for_should: "%{model} should ensure valid UUID format of attribute %{attr}"
|
113
|
+
failure_message_for_should_not: "%{model} should not ensure valid UUID format of attribute %{attr}"
|
@@ -9,10 +9,18 @@ RSpec::Matchers.define :ensure_valid_alpha_format_of do |attribute|
|
|
9
9
|
end
|
10
10
|
|
11
11
|
failure_message do |model|
|
12
|
-
I18n.t(
|
12
|
+
I18n.t(
|
13
|
+
'flash_validators.matchers.ensure_valid_alpha_format_of.failure_message_for_should',
|
14
|
+
attr: attribute.inspect,
|
15
|
+
model: model.class.name
|
16
|
+
)
|
13
17
|
end
|
14
18
|
|
15
19
|
failure_message_when_negated do |model|
|
16
|
-
I18n.t(
|
20
|
+
I18n.t(
|
21
|
+
'flash_validators.matchers.ensure_valid_alpha_format_of.failure_message_for_should_not',
|
22
|
+
attr: attribute.inspect,
|
23
|
+
model: model.class.name
|
24
|
+
)
|
17
25
|
end
|
18
26
|
end
|
@@ -9,10 +9,18 @@ RSpec::Matchers.define :ensure_valid_alpha_numeric_format_of do |attribute|
|
|
9
9
|
end
|
10
10
|
|
11
11
|
failure_message do |model|
|
12
|
-
I18n.t(
|
12
|
+
I18n.t(
|
13
|
+
'flash_validators.matchers.ensure_valid_alpha_numeric_format_of.failure_message_for_should',
|
14
|
+
attr: attribute.inspect,
|
15
|
+
model: model.class.name
|
16
|
+
)
|
13
17
|
end
|
14
18
|
|
15
19
|
failure_message_when_negated do |model|
|
16
|
-
I18n.t(
|
20
|
+
I18n.t(
|
21
|
+
'flash_validators.matchers.ensure_valid_alpha_numeric_format_of.failure_message_for_should_not',
|
22
|
+
attr: attribute.inspect,
|
23
|
+
model: model.class.name
|
24
|
+
)
|
17
25
|
end
|
18
26
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
RSpec::Matchers.define :ensure_valid_base64_format_of do |attribute|
|
2
|
+
match do |model|
|
3
|
+
model.send("#{attribute}=", "1a.b2==")
|
4
|
+
model.valid?
|
5
|
+
|
6
|
+
if model.errors.has_key?(attribute)
|
7
|
+
model.errors[attribute].include?(I18n.t('errors.messages.base64'))
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
failure_message do |model|
|
12
|
+
I18n.t(
|
13
|
+
'flash_validators.matchers.ensure_valid_base64_format_of.failure_message_for_should',
|
14
|
+
attr: attribute.inspect,
|
15
|
+
model: model.class.name
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
failure_message_when_negated do |model|
|
20
|
+
I18n.t(
|
21
|
+
'flash_validators.matchers.ensure_valid_base64_format_of.failure_message_for_should_not',
|
22
|
+
attr: attribute.inspect,
|
23
|
+
model: model.class.name
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|