active_validation 1.0.0 → 1.1.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -6
  3. data/.rspec +3 -3
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/LICENSE.txt +17 -18
  6. data/README.md +100 -145
  7. data/active_validation.gemspec +4 -3
  8. data/bin/console +14 -0
  9. data/bin/rake +16 -0
  10. data/bin/setup +7 -0
  11. data/config/locales/en.yml +7 -8
  12. data/lib/active_validation.rb +4 -4
  13. data/lib/active_validation/matchers/{ensure_valid_latitude_format_of.rb → ensure_valid_coordinate_format_of.rb} +5 -5
  14. data/lib/active_validation/validators/coordinate_validator.rb +38 -0
  15. data/lib/active_validation/version.rb +1 -1
  16. metadata +11 -63
  17. data/lib/active_validation/matchers/ensure_valid_longitude_format_of.rb +0 -26
  18. data/lib/active_validation/validators/latitude_validator.rb +0 -9
  19. data/lib/active_validation/validators/longitude_validator.rb +0 -9
  20. data/spec/lib/alpha_numeric_validator_spec.rb +0 -91
  21. data/spec/lib/alpha_validator_spec.rb +0 -182
  22. data/spec/lib/base64_validator_spec.rb +0 -33
  23. data/spec/lib/boolean_validator_spec.rb +0 -35
  24. data/spec/lib/credit_card_validator_spec.rb +0 -686
  25. data/spec/lib/currency_validator_spec.rb +0 -63
  26. data/spec/lib/cusip_validator_spec.rb +0 -27
  27. data/spec/lib/email_validator_spec.rb +0 -109
  28. data/spec/lib/equality_validator_spec.rb +0 -334
  29. data/spec/lib/hex_validator_spec.rb +0 -73
  30. data/spec/lib/imei_validator_spec.rb +0 -41
  31. data/spec/lib/ip_validator_spec.rb +0 -33
  32. data/spec/lib/isbn_validator_spec.rb +0 -41
  33. data/spec/lib/isin_validator_spec.rb +0 -35
  34. data/spec/lib/latitude_validator_spec.rb +0 -31
  35. data/spec/lib/longitude_validator_spec.rb +0 -31
  36. data/spec/lib/mac_address_validator_spec.rb +0 -54
  37. data/spec/lib/name_validator_spec.rb +0 -39
  38. data/spec/lib/password_validator_spec.rb +0 -85
  39. data/spec/lib/phone_validator_spec.rb +0 -42
  40. data/spec/lib/sedol_validator_spec.rb +0 -31
  41. data/spec/lib/slug_validator_spec.rb +0 -41
  42. data/spec/lib/ssn_validator_spec.rb +0 -36
  43. data/spec/lib/url_validator_spec.rb +0 -106
  44. data/spec/lib/username_validator_spec.rb +0 -37
  45. data/spec/lib/uuid_validator_spec.rb +0 -157
  46. data/spec/spec_helper.rb +0 -12
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe CurrencyValidator do
4
-
5
- context "has a valid value" do
6
- let(:klass) do
7
- Class.new do
8
- include ActiveModel::Validations
9
- attr_accessor :price, :name
10
- validates :price, currency: true
11
- end
12
- end
13
-
14
- subject { klass.new }
15
-
16
- it { should allow_value(".00").for(:price) }
17
- it { should allow_value("1.0").for(:price) }
18
- it { should allow_value("1.00").for(:price) }
19
- it { should allow_value("12345678.00").for(:price) }
20
-
21
- it { should_not allow_value('').for(:price) }
22
- it { should_not allow_value(' ').for(:price) }
23
- it { should_not allow_value(nil).for(:price) }
24
- it { should_not allow_value("1").for(:price) }
25
- it { should_not allow_value("1.000").for(:price) }
26
- it { should_not allow_value("$1.00").for(:price) }
27
- it { should_not allow_value("! \#$%\`|").for(:price) }
28
- it { should_not allow_value("<>@[]\`|").for(:price) }
29
-
30
- it { should ensure_valid_currency_format_of(:price) }
31
- it { should_not ensure_valid_currency_format_of(:name) }
32
- end
33
-
34
- context "with :strict option has a valid value" do
35
- let(:klass) do
36
- Class.new do
37
- include ActiveModel::Validations
38
- attr_accessor :price, :name
39
- validates :price, currency: { strict: true }
40
- end
41
- end
42
-
43
- subject { klass.new }
44
-
45
- it { should allow_value("1.00").for(:price) }
46
- it { should allow_value("12345678.00").for(:price) }
47
-
48
- it { should_not allow_value('').for(:price) }
49
- it { should_not allow_value(' ').for(:price) }
50
- it { should_not allow_value(nil).for(:price) }
51
- it { should_not allow_value(".00").for(:price) }
52
- it { should_not allow_value("1").for(:price) }
53
- it { should_not allow_value("1.0").for(:price) }
54
- it { should_not allow_value("1.000").for(:price) }
55
- it { should_not allow_value("$1.00").for(:price) }
56
- it { should_not allow_value("! \#$%\`|").for(:price) }
57
- it { should_not allow_value("<>@[]\`|").for(:price) }
58
-
59
- it { should ensure_valid_currency_format_of(:price) }
60
- it { should_not ensure_valid_currency_format_of(:name) }
61
- end
62
-
63
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe CusipValidator do
4
-
5
- context "has a valid value" do
6
- let(:klass) do
7
- Class.new do
8
- include ActiveModel::Validations
9
- attr_accessor :code, :name
10
- validates :code, cusip: true
11
- end
12
- end
13
-
14
- subject { klass.new }
15
-
16
- it { should allow_value("125509BG3").for(:code) }
17
-
18
- it { should_not allow_value('').for(:code) }
19
- it { should_not allow_value(' ').for(:code) }
20
- it { should_not allow_value(nil).for(:code) }
21
- it { should_not allow_value("12345678AB").for(:code) }
22
-
23
- it { should ensure_valid_cusip_format_of(:code) }
24
- it { should_not ensure_valid_cusip_format_of(:name) }
25
- end
26
-
27
- end
@@ -1,109 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe EmailValidator do
4
-
5
- subject { klass.new }
6
-
7
- context "with valid format" do
8
- let(:klass) do
9
- Class.new do
10
- include ActiveModel::Validations
11
- attr_accessor :email, :name
12
- validates :email, email: true
13
- end
14
- end
15
-
16
- [
17
- "s_u@example.com",
18
- "super.user@example.com",
19
- "super+user@example.com",
20
- "super-user@example.com",
21
- "super+user@example-site.com",
22
- "user@example.com",
23
- "user@example-site.com",
24
- "user@en.example.com",
25
- "user@example.museum",
26
- "user@123.com",
27
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@example.com",
28
- "01234567890@example.com"
29
- ].each do |email|
30
- it "#{email.inspect} should be valid" do
31
- should allow_value(email).for(:email)
32
- end
33
- end
34
-
35
- [
36
- "",
37
- " ",
38
- "example.com",
39
- "super user@example.com",
40
- " user@example.com",
41
- " user@example.com ",
42
- "user@example.com ",
43
- "user",
44
- "user@com",
45
- "user@.com",
46
- "user@example",
47
- "user@example.",
48
- "user@example.c",
49
- "user_example.com",
50
- "user@example_site.com",
51
- "user@example.com@example.com",
52
- "user@",
53
- "user@! \"\#$%(),/;<>_[]\`|.com",
54
- "user@127.0.0.1",
55
- "user@127.0.0.1:25",
56
- "user@example.com\n<script>alert('hello')</script>",
57
- "@example.com",
58
- "@example",
59
- "@",
60
- "! \#$%\`|@example.com",
61
- "<>@[]\`|@example.com"
62
- ].each do |email|
63
- it "#{email.inspect} should be invalid" do
64
- should_not allow_value(email).for(:email)
65
- end
66
- end
67
-
68
- it { should ensure_valid_email_format_of(:email) }
69
- it { should_not ensure_valid_email_format_of(:name) }
70
- end
71
-
72
- context "is in the specific domain" do
73
- context "domain specified as string" do
74
- let(:klass) do
75
- Class.new do
76
- include ActiveModel::Validations
77
- attr_accessor :email, :name
78
- validates :email, email: { domain: "edu" }
79
- end
80
- end
81
-
82
- it { should allow_value("user@example.edu").for(:email) }
83
- it { should_not allow_value("user@example.com").for(:email) }
84
-
85
- it { should ensure_valid_email_format_of(:email) }
86
- it { should_not ensure_valid_email_format_of(:name) }
87
- end
88
-
89
- context "set as an array of strings and symbols" do
90
- let(:klass) do
91
- Class.new do
92
- include ActiveModel::Validations
93
- attr_accessor :email, :name
94
- validates :email, email: { domain: ['com', :edu, 'Com.Au'] }
95
- end
96
- end
97
-
98
- it { should allow_value("user@example.com").for(:email) }
99
- it { should allow_value("user@example.edu").for(:email) }
100
- it { should allow_value("user@example.com.au").for(:email) }
101
- it { should allow_value("user@example.Com.Au").for(:email) }
102
- it { should_not allow_value("user@example.org").for(:email) }
103
-
104
- it { should ensure_valid_email_format_of(:email) }
105
- it { should_not ensure_valid_email_format_of(:name) }
106
- end
107
- end
108
-
109
- end
@@ -1,334 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe EqualityValidator do
4
-
5
- context "value less than" do
6
- let(:klass) do
7
- Class.new do
8
- include ActiveModel::Validations
9
- attr_accessor :bid, :price, :name
10
- validates :bid, equality: { operator: :less_than, to: :price }
11
- end
12
- end
13
-
14
- subject(:model){ klass.new }
15
-
16
- specify "first field less than the second" do
17
- model.bid = 1
18
- model.price = 2
19
- expect(model).to be_valid
20
- end
21
-
22
- specify "first field equal to the second" do
23
- model.bid = 1
24
- model.price = 1
25
- expect(model).to be_invalid
26
- end
27
-
28
- specify "first field greater than the second" do
29
- model.bid = 1
30
- model.price = 0
31
- expect(model).to be_invalid
32
- end
33
-
34
- specify "first field is empty, the second is blank" do
35
- model.bid = ""
36
- model.price = " "
37
- expect(model).to be_valid
38
- end
39
-
40
- specify "first field is blank, the second is empty" do
41
- model.bid = " "
42
- model.price = ""
43
- expect(model).to be_invalid
44
- end
45
- end
46
-
47
- context "value less than or equal to" do
48
- let(:klass) do
49
- Class.new do
50
- include ActiveModel::Validations
51
- attr_accessor :bid, :price, :name
52
- validates :bid, equality: { operator: :less_than_or_equal_to, to: :price }
53
- end
54
- end
55
-
56
- subject(:model){ klass.new }
57
-
58
- specify "first field equal to the second" do
59
- model.bid = 1
60
- model.price = 1
61
- expect(model).to be_valid
62
- end
63
-
64
- specify "first field less than the second" do
65
- model.bid = 1
66
- model.price = 2
67
- expect(model).to be_valid
68
- end
69
-
70
- specify "first field greater than the second" do
71
- model.bid = 1
72
- model.price = 0
73
- expect(model).to be_invalid
74
- end
75
-
76
- specify "first field is empty, the second is blank" do
77
- model.bid = ""
78
- model.price = " "
79
- expect(model).to be_valid
80
- end
81
-
82
- specify "first field is blank, the second is empty" do
83
- model.bid = " "
84
- model.price = ""
85
- expect(model).to be_invalid
86
- end
87
-
88
- specify "both fields are blank" do
89
- model.bid = model.price = ""
90
- expect(model).to be_valid
91
- end
92
-
93
- specify "both fields are empty" do
94
- model.bid = model.price = " "
95
- expect(model).to be_valid
96
- end
97
- end
98
-
99
- context "value greater than" do
100
- let(:klass) do
101
- Class.new do
102
- include ActiveModel::Validations
103
- attr_accessor :bid, :price, :name
104
- validates :bid, equality: { operator: :greater_than, to: :price }
105
- end
106
- end
107
-
108
- subject(:model){ klass.new }
109
-
110
- specify "first field greater than the second" do
111
- model.bid = 1
112
- model.price = 0
113
- expect(model).to be_valid
114
- end
115
-
116
- specify "first field less than the second" do
117
- model.bid = 1
118
- model.price = 2
119
- expect(model).to be_invalid
120
- end
121
-
122
- specify "first field equal to the second" do
123
- model.bid = 1
124
- model.price = 1
125
- expect(model).to be_invalid
126
- end
127
-
128
- specify "first field is empty, the second is blank" do
129
- model.bid = ""
130
- model.price = " "
131
- expect(model).to be_invalid
132
- end
133
-
134
- specify "first field is blank, the second is empty" do
135
- model.bid = " "
136
- model.price = ""
137
- expect(model).to be_valid
138
- end
139
- end
140
-
141
- context "value greater than or equal to" do
142
- let(:klass) do
143
- Class.new do
144
- include ActiveModel::Validations
145
- attr_accessor :bid, :price, :name
146
- validates :bid, equality: { operator: :greater_than_or_equal_to, to: :price }
147
- end
148
- end
149
-
150
- subject(:model){ klass.new }
151
-
152
- specify "first field equal to the second" do
153
- model.bid = 1
154
- model.price = 1
155
- expect(model).to be_valid
156
- end
157
-
158
- specify "first field greater than the second" do
159
- model.bid = 1
160
- model.price = 0
161
- expect(model).to be_valid
162
- end
163
-
164
- specify "first field less than the second" do
165
- model.bid = 1
166
- model.price = 2
167
- expect(model).to be_invalid
168
- end
169
-
170
- specify "first field is empty, the second is blank" do
171
- model.bid = ""
172
- model.price = " "
173
- expect(model).to be_invalid
174
- end
175
-
176
- specify "first field is blank, the second is empty" do
177
- model.bid = " "
178
- model.price = ""
179
- expect(model).to be_valid
180
- end
181
-
182
- specify "both fields are blank" do
183
- model.bid = model.price = ""
184
- expect(model).to be_valid
185
- end
186
-
187
- specify "both fields are empty" do
188
- model.bid = model.price = " "
189
- expect(model).to be_valid
190
- end
191
- end
192
-
193
- context "value equal to" do
194
- let(:klass) do
195
- Class.new do
196
- include ActiveModel::Validations
197
- attr_accessor :bid, :price, :name
198
- validates :bid, equality: { operator: :equal_to, to: :price }
199
- end
200
- end
201
-
202
- subject(:model){ klass.new }
203
-
204
- specify "first field equal to the second" do
205
- model.bid = 1
206
- model.price = 1
207
- expect(model).to be_valid
208
- end
209
-
210
- specify "first field less than the second" do
211
- model.bid = 1
212
- model.price = 2
213
- expect(model).to be_invalid
214
- end
215
-
216
- specify "first field greater than the second" do
217
- model.bid = 1
218
- model.price = 0
219
- expect(model).to be_invalid
220
- end
221
-
222
- specify "first field has value, the second is nil" do
223
- model.bid = 1
224
- model.price = nil
225
- expect(model).to be_invalid
226
- end
227
-
228
- specify "first field is nil, the second has value" do
229
- model.bid = nil
230
- model.price = 1
231
- expect(model).to be_invalid
232
- end
233
-
234
- specify "both fields are nil" do
235
- model.bid = model.price = nil
236
- expect(model).to be_valid
237
- end
238
-
239
- specify "first field is empty, the second is blank" do
240
- model.bid = ""
241
- model.price = " "
242
- expect(model).to be_invalid
243
- end
244
-
245
- specify "first field is blank, the second is empty" do
246
- model.bid = " "
247
- model.price = ""
248
- expect(model).to be_invalid
249
- end
250
-
251
- specify "both fields are blank" do
252
- model.bid = model.price = ""
253
- expect(model).to be_valid
254
- end
255
-
256
- specify "both fields are empty" do
257
- model.bid = model.price = " "
258
- expect(model).to be_valid
259
- end
260
- end
261
-
262
- context "value not equal to" do
263
- let(:klass) do
264
- Class.new do
265
- include ActiveModel::Validations
266
- attr_accessor :bid, :price, :name
267
- validates :bid, equality: { operator: :not_equal_to, to: :price }
268
- end
269
- end
270
-
271
- subject(:model){ klass.new }
272
-
273
- specify "first field equal to the second" do
274
- model.bid = 1
275
- model.price = 1
276
- expect(model).to be_invalid
277
- end
278
-
279
- specify "first field less than the second" do
280
- model.bid = 1
281
- model.price = 2
282
- expect(model).to be_valid
283
- end
284
-
285
- specify "first field greater than the second" do
286
- model.bid = 1
287
- model.price = 0
288
- expect(model).to be_valid
289
- end
290
-
291
- specify "first field has value, the second is nil" do
292
- model.bid = 1
293
- model.price = nil
294
- expect(model).to be_valid
295
- end
296
-
297
- specify "first field is nil, the second has value" do
298
- model.bid = nil
299
- model.price = 1
300
- expect(model).to be_valid
301
- end
302
-
303
- specify "both fields are nil" do
304
- model.bid = model.price = nil
305
- expect(model).to be_invalid
306
- end
307
-
308
- specify "first field is empty, the second is blank" do
309
- model.bid = ""
310
- model.price = " "
311
- expect(model).to be_valid
312
- end
313
-
314
- specify "first field is blank, the second is empty" do
315
- model.bid = " "
316
- model.price = ""
317
- expect(model).to be_valid
318
- end
319
-
320
- specify "both fields are blank" do
321
- model.bid = model.price = ""
322
- expect(model).to be_invalid
323
- end
324
-
325
- specify "both fields are empty" do
326
- model.bid = model.price = " "
327
- expect(model).to be_invalid
328
- end
329
- end
330
-
331
- #it { should ensure_equality_of(:bid).to(:price).operator(:less_than) }
332
- #it { should_not ensure_equality_of(:bid).to(:name).operator(:less_than) }
333
-
334
- end