postal_code 0.3.2 → 0.4.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.
@@ -1,6 +1,6 @@
1
1
  module PostalCode
2
2
 
3
- VERSION = '0.3.2'
3
+ VERSION = '0.4.0'
4
4
 
5
5
  CityOffset = 0
6
6
  StateOffset = 1
@@ -45,13 +45,17 @@ module PostalCode
45
45
  end
46
46
 
47
47
  #
48
- # * All postal code parameters must be strings.
49
- # * Postal codes are not calculable, therefore should not be numeric.
50
- # * A postal code with a leading zero would be an octal. However, *08880* is
51
- # an invalid octal numeric, yet a valid postal code.
48
+ # Postal codes must be strings because:
49
+ # 1. Postal codes are not calculable, therefore should not be numeric.
50
+ # 2. A postal code with a leading zero would be an octal. However, *08880* is
51
+ # an invalid octal numeric, yet a valid postal code.
52
52
  #
53
53
  def self.valid_format? postal_code
54
- postal_code =~ /^\d{5}(-\d{4})?$/
54
+ unless postal_code.is_a? String
55
+ raise(TypeError, "postal code must be a string")
56
+ end
57
+
58
+ (postal_code =~ /^\d{5}(-\d{4})?$/) ? true : false
55
59
  end
56
60
 
57
61
  #
@@ -74,6 +78,6 @@ module PostalCode
74
78
  end
75
79
  end
76
80
 
77
- private_class_method :fetch, :valid_format?
81
+ private_class_method :fetch
78
82
 
79
83
  end
@@ -2,11 +2,21 @@ Gem::Specification.new('postal_code') do |s|
2
2
  s.version = File.read('lib/postal_code.rb')[/VERSION = '(.*)'/, 1]
3
3
  s.author = 'Clint Pachl'
4
4
  s.email = 'pachl@ecentryx.com'
5
- s.homepage = 'http://ecentryx.com/gems/postal_code'
5
+ s.homepage = 'https://ecentryx.com/gems/postal_code'
6
6
  s.license = 'ISC'
7
- s.summary = 'Postal Code Resolver'
8
- s.description = 'Resolves a postal code to a corresponding city or state.'
9
- s.files = Dir['README.rdoc', 'Rakefile', 'postal_code.gemspec',
10
- 'lib/**/*.rb', 'test/**/*', 'db/*.tsv']
11
- s.test_files = Dir['test/*.rb']
7
+ s.summary = 'Postal (ZIP) Code Resolver'
8
+ s.description = 'Resolve a postal (ZIP) code to a corresponding city or state.'
9
+ s.files = Dir[
10
+ 'Rakefile',
11
+ 'README*',
12
+ '*.gemspec',
13
+ 'lib/**/*.rb',
14
+ 'test/**/*',
15
+ 'db/*.tsv'
16
+ ]
17
+ s.extra_rdoc_files = ['README.rdoc']
18
+ s.rdoc_options = [
19
+ '--title', "A Ruby #{s.summary}",
20
+ '--main', 'README.rdoc'
21
+ ]
12
22
  end
@@ -1,7 +1,7 @@
1
1
  require 'minitest/autorun'
2
2
  require 'postal_code'
3
3
 
4
- class PostalCodeTest < Minitest::Unit::TestCase
4
+ class PostalCodeTest < Minitest::Test
5
5
 
6
6
  ProductionDB = PostalCode::DB.dup
7
7
  TestDB = File.dirname(__FILE__) + '/data/US.tsv'
@@ -43,8 +43,8 @@ class PostalCodeTest < Minitest::Unit::TestCase
43
43
 
44
44
  def test_postal_code_not_found_in_any_city
45
45
  pcode = '99999'
46
- assert_equal nil, PostalCode.city(pcode)
47
- assert_equal nil, PostalCode.state(pcode)
46
+ assert_nil PostalCode.city(pcode)
47
+ assert_nil PostalCode.state(pcode)
48
48
  end
49
49
 
50
50
  def test_reactive_cache
@@ -72,15 +72,22 @@ class PostalCodeTest < Minitest::Unit::TestCase
72
72
  end
73
73
 
74
74
  def test_postal_code_validations
75
- refute PostalCode.send(:valid_format?, '99999').nil?
76
- refute PostalCode.send(:valid_format?, '00001').nil?
77
- refute PostalCode.send(:valid_format?, '00001-1234').nil?
78
- assert PostalCode.send(:valid_format?, '00001-123').nil?
79
- assert PostalCode.send(:valid_format?, '00001-').nil?
80
- assert PostalCode.send(:valid_format?, 99999).nil?
81
- assert PostalCode.send(:valid_format?, 00001).nil?
82
- assert PostalCode.send(:valid_format?, '1').nil?
83
- assert PostalCode.send(:valid_format?, 1).nil?
75
+ assert PostalCode.valid_format?('01234-1234')
76
+ refute PostalCode.valid_format?('01234-123')
77
+ refute PostalCode.valid_format?('01234-12')
78
+ refute PostalCode.valid_format?('01234-1')
79
+ refute PostalCode.valid_format?('01234-')
80
+ assert PostalCode.valid_format?('01234')
81
+ refute PostalCode.valid_format?('0123')
82
+ refute PostalCode.valid_format?('012')
83
+ refute PostalCode.valid_format?('01')
84
+ refute PostalCode.valid_format?('0')
85
+ end
86
+
87
+ def test_postal_code_validation_exceptions
88
+ assert_raises(TypeError) { PostalCode.valid_format? 99999 }
89
+ assert_raises(TypeError) { PostalCode.valid_format? 00001 }
90
+ assert_raises(TypeError) { PostalCode.valid_format? 1 }
84
91
  end
85
92
 
86
93
  end
metadata CHANGED
@@ -1,20 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postal_code
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clint Pachl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-10 00:00:00.000000000 Z
11
+ date: 2020-10-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Resolves a postal code to a corresponding city or state.
13
+ description: Resolve a postal (ZIP) code to a corresponding city or state.
14
14
  email: pachl@ecentryx.com
15
15
  executables: []
16
16
  extensions: []
17
- extra_rdoc_files: []
17
+ extra_rdoc_files:
18
+ - README.rdoc
18
19
  files:
19
20
  - README.rdoc
20
21
  - Rakefile
@@ -24,12 +25,16 @@ files:
24
25
  - postal_code.gemspec
25
26
  - test/data/US.tsv
26
27
  - test/test_postal_code.rb
27
- homepage: http://ecentryx.com/gems/postal_code
28
+ homepage: https://ecentryx.com/gems/postal_code
28
29
  licenses:
29
30
  - ISC
30
31
  metadata: {}
31
32
  post_install_message:
32
- rdoc_options: []
33
+ rdoc_options:
34
+ - "--title"
35
+ - A Ruby Postal (ZIP) Code Resolver
36
+ - "--main"
37
+ - README.rdoc
33
38
  require_paths:
34
39
  - lib
35
40
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -43,10 +48,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
43
48
  - !ruby/object:Gem::Version
44
49
  version: '0'
45
50
  requirements: []
46
- rubyforge_project:
47
- rubygems_version: 2.5.1
51
+ rubygems_version: 3.0.3
48
52
  signing_key:
49
53
  specification_version: 4
50
- summary: Postal Code Resolver
51
- test_files:
52
- - test/test_postal_code.rb
54
+ summary: Postal (ZIP) Code Resolver
55
+ test_files: []