validates_zipcode 0.0.18 → 0.0.19
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/.rubocop.yml +971 -0
- data/CHANGELOG.md +4 -0
- data/gemfiles/rails_3.2.gemfile.lock +1 -1
- data/gemfiles/rails_4.0.gemfile.lock +1 -1
- data/gemfiles/rails_4.1.gemfile.lock +1 -1
- data/gemfiles/rails_4.2.gemfile.lock +1 -1
- data/gemfiles/rails_5.0.gemfile.lock +1 -1
- data/lib/validates_zipcode/cldr_regex_collection.rb +3 -2
- data/lib/validates_zipcode/helper_methods.rb +1 -0
- data/lib/validates_zipcode/railtie.rb +1 -0
- data/lib/validates_zipcode/validator.rb +3 -2
- data/lib/validates_zipcode/version.rb +2 -1
- data/lib/validates_zipcode/zipcode.rb +1 -0
- data/lib/validates_zipcode.rb +7 -6
- data/spec/spec_helper.rb +1 -0
- data/spec/validates_zipcode_spec.rb +131 -115
- metadata +3 -2
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Regex source: http://unicode.org/cldr/trac/browser/trunk/common/supplemental/postalCodeData.xml
|
2
3
|
# 159 countries supported
|
3
4
|
#
|
@@ -9,7 +10,7 @@ module ValidatesZipcode
|
|
9
10
|
GG: /\AGY\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}\z/,
|
10
11
|
IM: /\AIM\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}\z/,
|
11
12
|
US: /\A\d{5}([ \-](?:\d{4}|\d{6}))?\z/,
|
12
|
-
IE: /\A([AC-FHKNPRTV-Y]\d{2}|D6W)[0-9AC-FHKNPRTV-Y]{4}\z/,
|
13
|
+
IE: /\A([AC-FHKNPRTV-Y]\d{2}|D6W)\s?[0-9AC-FHKNPRTV-Y]{4}\z/,
|
13
14
|
CA: /\A[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][ ]?\d[ABCEGHJ-NPRSTV-Z]\d\z/,
|
14
15
|
DE: /\A\d{5}\z/,
|
15
16
|
AU: /\A\d{4}\z/,
|
@@ -184,7 +185,7 @@ module ValidatesZipcode
|
|
184
185
|
HN: /\A(([a-zA-Z]){2}|\d{2})\d{4}\z/,
|
185
186
|
IO: /\A\d{5}\z/,
|
186
187
|
IR: /\A\d{5}\z/,
|
187
|
-
JP: /\A\d{
|
188
|
+
JP: /\A\d{3}\-?\d{4}\z/,
|
188
189
|
JM: /\A(JM)[A-Z]{3}\d{2}\z/,
|
189
190
|
KI: /\A([a-zA-Z\d\s]){3,}\z/,
|
190
191
|
KN: /\A([a-zA-Z\d\s]){3,8}\z/,
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# Usage:
|
2
3
|
#
|
3
4
|
# class User < ActiveModel
|
@@ -32,8 +33,8 @@ module ValidatesZipcode
|
|
32
33
|
|
33
34
|
unless ValidatesZipcode::Zipcode.new(options).valid?
|
34
35
|
record.errors.add(attribute, :invalid_zipcode, message: I18n.t('errors.messages.invalid_zipcode',
|
35
|
-
|
36
|
-
|
36
|
+
value: value,
|
37
|
+
default: 'Zipcode is invalid'))
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
data/lib/validates_zipcode.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'validates_zipcode/railtie' if defined?(Rails)
|
3
|
+
require 'validates_zipcode/cldr_regex_collection'
|
4
|
+
require 'validates_zipcode/validator'
|
5
|
+
require 'validates_zipcode/helper_methods'
|
6
|
+
require 'validates_zipcode/version'
|
7
|
+
require 'validates_zipcode/zipcode'
|
7
8
|
|
8
9
|
module ValidatesZipcode
|
9
10
|
def self.valid?(zipcode, country_alpha2, options = {})
|
data/spec/spec_helper.rb
CHANGED
@@ -1,88 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe ValidatesZipcode, '#validate_each' do
|
4
|
-
context
|
5
|
+
context 'Argentina' do
|
5
6
|
it 'does not add errors with a valid zipcode' do
|
6
|
-
|
7
|
-
record = build_record(zipcode, "LU")
|
8
|
-
zipcode_should_be_valid(record)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'adds errors with an invalid Zipcode' do
|
13
|
-
['124', '12345-12345', 'D0D0D0', 'invalid_zip'].each do |zipcode|
|
14
|
-
record = build_record(zipcode, 'LU')
|
15
|
-
zipcode_should_be_invalid(record, zipcode)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "Spain" do
|
21
|
-
it 'does not add errors with a valid zipcode' do
|
22
|
-
record = build_record('93108', "ES")
|
7
|
+
record = build_record('C1424CHN', 'AR')
|
23
8
|
zipcode_should_be_valid(record)
|
24
9
|
end
|
25
10
|
|
26
11
|
it 'adds errors with an invalid Zipcode' do
|
27
|
-
[
|
28
|
-
record = build_record(zipcode, '
|
12
|
+
%w[1234 12345 D0D0D0 invalid_zip].each do |zipcode|
|
13
|
+
record = build_record(zipcode, 'AR')
|
29
14
|
zipcode_should_be_invalid(record, zipcode)
|
30
15
|
end
|
31
16
|
end
|
32
17
|
end
|
33
18
|
|
34
|
-
context
|
19
|
+
context 'Australia and New Zeland' do
|
35
20
|
it 'does not add errors with a valid zipcode' do
|
36
|
-
|
37
|
-
|
38
|
-
[12345, '12345', '12345-1234', '12345-123456', '12345 1234', '12345 123456'].each do |zipcode|
|
39
|
-
record = build_record(zipcode, 'US')
|
21
|
+
%w[AU NZ].each do |code|
|
22
|
+
record = build_record('9310', code)
|
40
23
|
zipcode_should_be_valid(record)
|
41
24
|
end
|
42
25
|
end
|
43
26
|
|
44
27
|
it 'adds errors with an invalid Zipcode' do
|
45
|
-
[
|
46
|
-
|
47
|
-
|
28
|
+
%w[AU NZ].each do |code|
|
29
|
+
%w[C1424CHN 12345 invalid_zip].each do |zipcode|
|
30
|
+
record = build_record(zipcode, code)
|
31
|
+
zipcode_should_be_invalid(record, zipcode)
|
32
|
+
end
|
48
33
|
end
|
49
34
|
end
|
50
35
|
end
|
51
36
|
|
52
|
-
context
|
53
|
-
it '
|
54
|
-
['
|
55
|
-
record = build_record(zipcode, '
|
37
|
+
context 'Brazil' do
|
38
|
+
it 'validates with a valid zipcode' do
|
39
|
+
['72315', '72315-500', '72315500', '24210-325', '24210325'].each do |zipcode|
|
40
|
+
record = build_record(zipcode, 'BR')
|
56
41
|
zipcode_should_be_valid(record)
|
57
42
|
end
|
58
43
|
end
|
59
44
|
|
60
|
-
it '
|
61
|
-
|
62
|
-
|
63
|
-
zipcode_should_be_invalid(record, zipcode)
|
64
|
-
end
|
45
|
+
it 'does not validate with an invalid zipcode' do
|
46
|
+
record = build_record('723155', 'BR')
|
47
|
+
zipcode_should_be_invalid(record, '723155')
|
65
48
|
end
|
66
49
|
end
|
67
50
|
|
68
|
-
context
|
51
|
+
context 'Canada' do
|
69
52
|
it 'does not add errors with a valid zipcode' do
|
70
|
-
record = build_record('
|
53
|
+
record = build_record('A1J2Z9', 'CA')
|
71
54
|
zipcode_should_be_valid(record)
|
72
55
|
end
|
73
56
|
|
74
57
|
it 'adds errors with an invalid Zipcode' do
|
75
|
-
[
|
76
|
-
record = build_record(zipcode, '
|
58
|
+
%w[C1424CHN 12345 D0D0D0 invalid_zip].each do |zipcode|
|
59
|
+
record = build_record(zipcode, 'CA')
|
77
60
|
zipcode_should_be_invalid(record, zipcode)
|
78
61
|
end
|
79
62
|
end
|
80
63
|
end
|
81
64
|
|
82
|
-
context
|
65
|
+
context 'Chile' do
|
83
66
|
it 'does not add errors with a valid zipcode' do
|
84
67
|
['123-1233', '000-0000', '1234567'].each do |zipcode|
|
85
|
-
record = build_record(zipcode,
|
68
|
+
record = build_record(zipcode, 'CL')
|
86
69
|
zipcode_should_be_valid(record)
|
87
70
|
end
|
88
71
|
end
|
@@ -95,54 +78,62 @@ describe ValidatesZipcode, '#validate_each' do
|
|
95
78
|
end
|
96
79
|
end
|
97
80
|
|
98
|
-
context
|
99
|
-
it '
|
100
|
-
[
|
101
|
-
record = build_record('
|
81
|
+
context 'Czech' do
|
82
|
+
it 'validates with a valid zipcode' do
|
83
|
+
['12000', '721 00'].each do |zipcode|
|
84
|
+
record = build_record(zipcode, 'CZ')
|
102
85
|
zipcode_should_be_valid(record)
|
103
86
|
end
|
104
87
|
end
|
105
88
|
|
106
|
-
it '
|
107
|
-
|
108
|
-
|
109
|
-
record = build_record(zipcode, code)
|
110
|
-
zipcode_should_be_invalid(record, zipcode)
|
111
|
-
end
|
112
|
-
end
|
89
|
+
it 'does not validate with an invalid zipcode' do
|
90
|
+
record = build_record('981 32', 'CZ')
|
91
|
+
zipcode_should_be_invalid(record, '981 32')
|
113
92
|
end
|
114
93
|
end
|
115
94
|
|
116
|
-
context
|
117
|
-
it 'does not add errors with a valid
|
118
|
-
|
119
|
-
|
95
|
+
context 'Ireland' do
|
96
|
+
it 'does not add errors with a valid postcode - old format' do
|
97
|
+
['D02 AF30', 'X91 PK81', 'V94 H2PP', 'D07 R6YE', 'D6W1234',
|
98
|
+
'A230984', 'D00AV92', 'Y631FHK', 'A000000', 'D44N4X4'].each do |zipcode|
|
99
|
+
record = build_record(zipcode, 'IE')
|
100
|
+
zipcode_should_be_valid(record)
|
101
|
+
end
|
120
102
|
end
|
121
103
|
|
122
104
|
it 'adds errors with an invalid Zipcode' do
|
123
|
-
['
|
124
|
-
record = build_record(zipcode, '
|
105
|
+
['1234', '12345-12345', 'invalid_zip'].each do |zipcode|
|
106
|
+
record = build_record(zipcode, 'IE')
|
125
107
|
zipcode_should_be_invalid(record, zipcode)
|
126
108
|
end
|
127
109
|
end
|
128
110
|
end
|
129
111
|
|
130
|
-
context '
|
112
|
+
context 'Israel' do
|
131
113
|
it 'validates with a valid zipcode' do
|
132
|
-
|
133
|
-
|
114
|
+
%w[1029200 880000 90001].each do |zipcode|
|
115
|
+
record = build_record(zipcode, 'IL')
|
116
|
+
zipcode_should_be_valid(record)
|
117
|
+
end
|
134
118
|
end
|
135
119
|
|
136
120
|
it 'does not validate with an invalid zipcode' do
|
137
|
-
record = build_record('
|
138
|
-
zipcode_should_be_invalid(record, '
|
121
|
+
record = build_record('1200', 'IL')
|
122
|
+
zipcode_should_be_invalid(record, '1200')
|
139
123
|
end
|
140
124
|
end
|
141
125
|
|
142
|
-
context
|
143
|
-
it '
|
144
|
-
|
145
|
-
|
126
|
+
context 'Japan' do
|
127
|
+
it 'validates with a valid zipcode' do
|
128
|
+
%w[1029200 102-9200 408-0301 207-1000].each do |zipcode|
|
129
|
+
record = build_record(zipcode, 'JP')
|
130
|
+
zipcode_should_be_valid(record)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'does not validate with an invalid zipcode' do
|
135
|
+
record = build_record('1200', 'JP')
|
136
|
+
zipcode_should_be_invalid(record, '1200')
|
146
137
|
end
|
147
138
|
end
|
148
139
|
|
@@ -160,6 +151,22 @@ describe ValidatesZipcode, '#validate_each' do
|
|
160
151
|
end
|
161
152
|
end
|
162
153
|
|
154
|
+
context 'Luxembourg' do
|
155
|
+
it 'does not add errors with a valid zipcode' do
|
156
|
+
['L-5635', '5635'].each do |zipcode|
|
157
|
+
record = build_record(zipcode, 'LU')
|
158
|
+
zipcode_should_be_valid(record)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
it 'adds errors with an invalid Zipcode' do
|
163
|
+
['124', '12345-12345', 'D0D0D0', 'invalid_zip'].each do |zipcode|
|
164
|
+
record = build_record(zipcode, 'LU')
|
165
|
+
zipcode_should_be_invalid(record, zipcode)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
163
170
|
context 'Moldova' do
|
164
171
|
it 'validates with a valid zipcode' do
|
165
172
|
record = build_record('MD2001', 'MD')
|
@@ -172,59 +179,45 @@ describe ValidatesZipcode, '#validate_each' do
|
|
172
179
|
end
|
173
180
|
end
|
174
181
|
|
175
|
-
context '
|
182
|
+
context 'Panama' do
|
176
183
|
it 'validates with a valid zipcode' do
|
177
|
-
[
|
178
|
-
record = build_record(zipcode, '
|
184
|
+
%w[0800 6369].each do |zipcode|
|
185
|
+
record = build_record(zipcode, 'PA')
|
179
186
|
zipcode_should_be_valid(record)
|
180
187
|
end
|
181
188
|
end
|
182
189
|
|
183
190
|
it 'does not validate with an invalid zipcode' do
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
end
|
188
|
-
|
189
|
-
context 'Brazil' do
|
190
|
-
it 'validates with a valid zipcode' do
|
191
|
-
['72315', '72315-500', '72315500', '24210-325', '24210325'].each do |zipcode|
|
192
|
-
record = build_record(zipcode, 'BR')
|
193
|
-
zipcode_should_be_valid(record)
|
191
|
+
%w[10800 369 A341].each do |zipcode|
|
192
|
+
record = build_record(zipcode, 'PA')
|
193
|
+
zipcode_should_be_invalid(record, zipcode)
|
194
194
|
end
|
195
195
|
end
|
196
|
-
|
197
|
-
it 'does not validate with an invalid zipcode' do
|
198
|
-
record = build_record('723155', 'BR')
|
199
|
-
zipcode_should_be_invalid(record, '723155')
|
200
|
-
end
|
201
196
|
end
|
202
197
|
|
203
|
-
context '
|
198
|
+
context 'Portugal' do
|
204
199
|
it 'validates with a valid zipcode' do
|
205
|
-
['
|
206
|
-
record = build_record(zipcode, '
|
200
|
+
['4500', '4500-250'].each do |zipcode|
|
201
|
+
record = build_record(zipcode, 'PT')
|
207
202
|
zipcode_should_be_valid(record)
|
208
203
|
end
|
209
204
|
end
|
210
205
|
|
211
206
|
it 'does not validate with an invalid zipcode' do
|
212
|
-
record = build_record('
|
213
|
-
zipcode_should_be_invalid(record, '
|
207
|
+
record = build_record('4500-2500', 'PT')
|
208
|
+
zipcode_should_be_invalid(record, '4500-2500')
|
214
209
|
end
|
215
210
|
end
|
216
211
|
|
217
|
-
context '
|
212
|
+
context 'Serbia' do
|
218
213
|
it 'validates with a valid zipcode' do
|
219
|
-
|
220
|
-
|
221
|
-
zipcode_should_be_valid(record)
|
222
|
-
end
|
214
|
+
record = build_record('21000', 'RS')
|
215
|
+
zipcode_should_be_valid(record)
|
223
216
|
end
|
224
217
|
|
225
218
|
it 'does not validate with an invalid zipcode' do
|
226
|
-
record = build_record('
|
227
|
-
zipcode_should_be_invalid(record, '
|
219
|
+
record = build_record('2100', 'RS')
|
220
|
+
zipcode_should_be_invalid(record, '2100')
|
228
221
|
end
|
229
222
|
end
|
230
223
|
|
@@ -242,47 +235,70 @@ describe ValidatesZipcode, '#validate_each' do
|
|
242
235
|
end
|
243
236
|
end
|
244
237
|
|
245
|
-
context '
|
238
|
+
context 'Spain' do
|
239
|
+
it 'does not add errors with a valid zipcode' do
|
240
|
+
record = build_record('93108', 'ES')
|
241
|
+
zipcode_should_be_valid(record)
|
242
|
+
end
|
243
|
+
|
244
|
+
it 'adds errors with an invalid Zipcode' do
|
245
|
+
['1234', '12345-12345', 'D0D0D0', 'invalid_zip'].each do |zipcode|
|
246
|
+
record = build_record(zipcode, 'ES')
|
247
|
+
zipcode_should_be_invalid(record, zipcode)
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
context 'South Korea' do
|
246
253
|
it 'validates with a valid zipcode' do
|
247
|
-
['
|
248
|
-
record = build_record(zipcode, '
|
254
|
+
['72315', '723-150', '11011', '110-110'].each do |zipcode|
|
255
|
+
record = build_record(zipcode, 'KR')
|
249
256
|
zipcode_should_be_valid(record)
|
250
257
|
end
|
251
258
|
end
|
252
259
|
|
253
260
|
it 'does not validate with an invalid zipcode' do
|
254
|
-
record = build_record('
|
255
|
-
zipcode_should_be_invalid(record, '
|
261
|
+
record = build_record('723155', 'KR')
|
262
|
+
zipcode_should_be_invalid(record, '723155')
|
256
263
|
end
|
257
264
|
end
|
258
265
|
|
259
|
-
context '
|
260
|
-
it '
|
261
|
-
|
262
|
-
|
266
|
+
context 'USA' do
|
267
|
+
it 'does not add errors with a valid zipcode' do
|
268
|
+
record = build_record('93108', 'US')
|
269
|
+
zipcode_should_be_valid(record)
|
270
|
+
[12_345, '12345', '12345-1234', '12345-123456', '12345 1234', '12345 123456'].each do |zipcode|
|
271
|
+
record = build_record(zipcode, 'US')
|
263
272
|
zipcode_should_be_valid(record)
|
264
273
|
end
|
265
274
|
end
|
266
275
|
|
267
|
-
it '
|
268
|
-
['
|
269
|
-
record = build_record(zipcode, '
|
276
|
+
it 'adds errors with an invalid Zipcode' do
|
277
|
+
['1234', '12345-12345', 'D0D0D0', 'invalid_zip'].each do |zipcode|
|
278
|
+
record = build_record(zipcode, 'US')
|
270
279
|
zipcode_should_be_invalid(record, zipcode)
|
271
280
|
end
|
272
281
|
end
|
273
282
|
end
|
274
283
|
|
284
|
+
context 'unknown country' do
|
285
|
+
it 'does not add errors with a any zipcode' do
|
286
|
+
record = build_record('A1J2Z9', 'ZZ')
|
287
|
+
zipcode_should_be_valid(record)
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
275
291
|
context 'Excluded existing country code' do
|
276
292
|
context 'Panama' do
|
277
293
|
it 'validates with a valid zipcode' do
|
278
|
-
[
|
294
|
+
%w[0800 6369].each do |zipcode|
|
279
295
|
record = build_record(zipcode, 'PA')
|
280
296
|
zipcode_should_be_valid(record, excluded_country_codes: ['PA'])
|
281
297
|
end
|
282
298
|
end
|
283
299
|
|
284
300
|
it 'validates with an invalid zipcode' do
|
285
|
-
[
|
301
|
+
%w[10800 369 A341].each do |zipcode|
|
286
302
|
record = build_record(zipcode, 'PA')
|
287
303
|
zipcode_should_be_valid(record, excluded_country_codes: ['PA'])
|
288
304
|
end
|
@@ -292,7 +308,7 @@ describe ValidatesZipcode, '#validate_each' do
|
|
292
308
|
end
|
293
309
|
|
294
310
|
describe ValidatesZipcode, '.valid?' do
|
295
|
-
context
|
311
|
+
context 'Spain' do
|
296
312
|
it 'is true with a valid zipcode for a given country code' do
|
297
313
|
expect(ValidatesZipcode.valid?('93108', 'ES')).to eq(true)
|
298
314
|
end
|
@@ -319,7 +335,7 @@ def zipcode_should_be_valid(record, options = {})
|
|
319
335
|
expect(record.errors).to be_empty
|
320
336
|
end
|
321
337
|
|
322
|
-
def zipcode_should_be_invalid(record,
|
338
|
+
def zipcode_should_be_invalid(record, _zipcode, options = {})
|
323
339
|
ValidatesZipcode::Validator.new(options.merge(attributes: :zipcode)).validate(record)
|
324
340
|
|
325
341
|
expect(record.errors.size).to eq 1
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_zipcode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Gil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -90,6 +90,7 @@ extra_rdoc_files: []
|
|
90
90
|
files:
|
91
91
|
- ".gitignore"
|
92
92
|
- ".rspec"
|
93
|
+
- ".rubocop.yml"
|
93
94
|
- ".travis.yml"
|
94
95
|
- Appraisals
|
95
96
|
- CHANGELOG.md
|