validates_zipcode 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
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