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.
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 0.0.19
6
+
7
+ - Fixes JP and IE formats, thanks to ~ @timokleemann
8
+
5
9
  ## 0.0.18
6
10
 
7
11
  - Adds support for `excluded_country_codes` in the validation setup.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- validates_zipcode (0.0.18)
4
+ validates_zipcode (0.0.19)
5
5
  activemodel (>= 3.2.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- validates_zipcode (0.0.18)
4
+ validates_zipcode (0.0.19)
5
5
  activemodel (>= 3.2.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- validates_zipcode (0.0.18)
4
+ validates_zipcode (0.0.19)
5
5
  activemodel (>= 3.2.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- validates_zipcode (0.0.18)
4
+ validates_zipcode (0.0.19)
5
5
  activemodel (>= 3.2.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- validates_zipcode (0.0.18)
4
+ validates_zipcode (0.0.19)
5
5
  activemodel (>= 3.2.0)
6
6
 
7
7
  GEM
@@ -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{7}\z/,
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
  module ActiveModel
2
3
  module Validations
3
4
  module HelperMethods
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ValidatesZipcode
2
3
  class Railtie < Rails::Railtie
3
4
  end
@@ -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
- value: value,
36
- default: 'Zipcode is invalid'))
36
+ value: value,
37
+ default: 'Zipcode is invalid'))
37
38
  end
38
39
  end
39
40
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ValidatesZipcode
2
- VERSION = '0.0.18'
3
+ VERSION = '0.0.19'
3
4
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module ValidatesZipcode
2
3
  class Zipcode
3
4
  include CldrRegexpCollection
@@ -1,9 +1,10 @@
1
- require "validates_zipcode/railtie" if defined?(Rails)
2
- require "validates_zipcode/cldr_regex_collection"
3
- require "validates_zipcode/validator"
4
- require "validates_zipcode/helper_methods"
5
- require "validates_zipcode/version"
6
- require "validates_zipcode/zipcode"
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 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  require 'validates_zipcode'
@@ -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 "Luxembourg" do
5
+ context 'Argentina' do
5
6
  it 'does not add errors with a valid zipcode' do
6
- ['L-5635', '5635'].each do |zipcode|
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
- ['1234', '12345-12345', 'D0D0D0', 'invalid_zip'].each do |zipcode|
28
- record = build_record(zipcode, 'ES')
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 "USA" do
19
+ context 'Australia and New Zeland' do
35
20
  it 'does not add errors with a valid zipcode' do
36
- record = build_record('93108', "US")
37
- zipcode_should_be_valid(record)
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
- ['1234', '12345-12345', 'D0D0D0', 'invalid_zip'].each do |zipcode|
46
- record = build_record(zipcode, 'US')
47
- zipcode_should_be_invalid(record, zipcode)
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 "Ireland" do
53
- it 'does not add errors with a valid postcode' do
54
- ['D6W1234', 'A230984', 'D00AV92', 'Y631FHK', 'A000000', 'D44N4X4'].each do |zipcode|
55
- record = build_record(zipcode, 'IE')
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 'adds errors with an invalid Zipcode' do
61
- ['1234', '12345-12345', 'invalid_zip'].each do |zipcode|
62
- record = build_record(zipcode, 'IE')
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 "Argentina" do
51
+ context 'Canada' do
69
52
  it 'does not add errors with a valid zipcode' do
70
- record = build_record('C1424CHN', "AR")
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
- ['1234', '12345', 'D0D0D0', 'invalid_zip'].each do |zipcode|
76
- record = build_record(zipcode, 'AR')
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 "Chile" do
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, "CL")
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 "Australia and New Zeland" do
99
- it 'does not add errors with a valid zipcode' do
100
- ["AU", "NZ"].each do |code|
101
- record = build_record('9310', code)
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 'adds errors with an invalid Zipcode' do
107
- ["AU", "NZ"].each do |code|
108
- ['C1424CHN', '12345', 'invalid_zip'].each do |zipcode|
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 "Canada" do
117
- it 'does not add errors with a valid zipcode' do
118
- record = build_record('A1J2Z9', 'CA')
119
- zipcode_should_be_valid(record)
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
- ['C1424CHN', '12345', 'D0D0D0', 'invalid_zip'].each do |zipcode|
124
- record = build_record(zipcode, 'CA')
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 'Serbia' do
112
+ context 'Israel' do
131
113
  it 'validates with a valid zipcode' do
132
- record = build_record('21000', 'RS')
133
- zipcode_should_be_valid(record)
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('2100', 'RS')
138
- zipcode_should_be_invalid(record, '2100')
121
+ record = build_record('1200', 'IL')
122
+ zipcode_should_be_invalid(record, '1200')
139
123
  end
140
124
  end
141
125
 
142
- context "unknown country" do
143
- it 'does not add errors with a any zipcode' do
144
- record = build_record('A1J2Z9', 'ZZ')
145
- zipcode_should_be_valid(record)
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 'Portugal' do
182
+ context 'Panama' do
176
183
  it 'validates with a valid zipcode' do
177
- ['4500', '4500-250'].each do |zipcode|
178
- record = build_record(zipcode, 'PT')
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
- record = build_record('4500-2500', 'PT')
185
- zipcode_should_be_invalid(record, '4500-2500')
186
- end
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 'South Korea' do
198
+ context 'Portugal' do
204
199
  it 'validates with a valid zipcode' do
205
- ['72315', '723-150', '11011', '110-110'].each do |zipcode|
206
- record = build_record(zipcode, 'KR')
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('723155', 'KR')
213
- zipcode_should_be_invalid(record, '723155')
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 'Czech' do
212
+ context 'Serbia' do
218
213
  it 'validates with a valid zipcode' do
219
- ['12000', '721 00'].each do |zipcode|
220
- record = build_record(zipcode, 'CZ')
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('981 32', 'CZ')
227
- zipcode_should_be_invalid(record, '981 32')
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 'Israel' do
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
- ['1029200', '880000', '90001'].each do |zipcode|
248
- record = build_record(zipcode, 'IL')
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('1200', 'IL')
255
- zipcode_should_be_invalid(record, '1200')
261
+ record = build_record('723155', 'KR')
262
+ zipcode_should_be_invalid(record, '723155')
256
263
  end
257
264
  end
258
265
 
259
- context 'Panama' do
260
- it 'validates with a valid zipcode' do
261
- ['0800', '6369'].each do |zipcode|
262
- record = build_record(zipcode, 'PA')
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 'does not validate with an invalid zipcode' do
268
- ['10800', '369', 'A341'].each do |zipcode|
269
- record = build_record(zipcode, 'PA')
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
- ['0800', '6369'].each do |zipcode|
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
- ['10800', '369', 'A341'].each do |zipcode|
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 "Spain" do
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, zipcode, options = {})
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.18
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-15 00:00:00.000000000 Z
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