tracking_number 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/base.rb +1 -1
- data/lib/ups.rb +22 -22
- data/lib/usps.rb +1 -1
- data/test/test_dhl_tracking_number.rb +1 -3
- data/test/test_fedex_tracking_number.rb +4 -16
- data/test/test_helper.rb +7 -0
- data/test/test_tracking_number.rb +11 -0
- data/test/test_ups_tracking_number.rb +1 -3
- data/test/test_usps_tracking_number.rb +6 -15
- data/tracking_number.gemspec +3 -3
- metadata +20 -44
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/lib/base.rb
CHANGED
@@ -3,7 +3,7 @@ class TrackingNumber
|
|
3
3
|
attr_accessor :tracking_number
|
4
4
|
def initialize(tracking_number)
|
5
5
|
@original_number = tracking_number
|
6
|
-
@tracking_number = tracking_number.gsub(" ", "").upcase
|
6
|
+
@tracking_number = tracking_number.strip.gsub(" ", "").upcase
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.search(body)
|
data/lib/ups.rb
CHANGED
@@ -42,49 +42,49 @@ class TrackingNumber
|
|
42
42
|
|
43
43
|
def service_type
|
44
44
|
case decode[:service_type]
|
45
|
-
when "01"
|
45
|
+
when "01"
|
46
46
|
"UPS United States Next Day Air (Red)"
|
47
|
-
when "02"
|
47
|
+
when "02"
|
48
48
|
"UPS United States Second Day Air (Blue)"
|
49
|
-
when "03"
|
49
|
+
when "03"
|
50
50
|
"UPS United States Ground"
|
51
|
-
when "12"
|
51
|
+
when "12"
|
52
52
|
"UPS United States Third Day Select"
|
53
|
-
when "13"
|
53
|
+
when "13"
|
54
54
|
"UPS United States Next Day Air Saver (Red Saver)"
|
55
|
-
when "15"
|
55
|
+
when "15"
|
56
56
|
"UPS United States Next Day Air Early A.M."
|
57
|
-
when "22"
|
57
|
+
when "22"
|
58
58
|
"UPS United States Ground - Returns Plus - Three Pickup Attempts"
|
59
|
-
when "32"
|
59
|
+
when "32"
|
60
60
|
"UPS United States Next Day Air Early A.M. - COD"
|
61
|
-
when "33"
|
61
|
+
when "33"
|
62
62
|
"UPS United States Next Day Air Early A.M. - Saturday Delivery, COD"
|
63
|
-
when "41"
|
63
|
+
when "41"
|
64
64
|
"UPS United States Next Day Air Early A.M. - Saturday Delivery"
|
65
|
-
when "42"
|
65
|
+
when "42"
|
66
66
|
"UPS United States Ground - Signature Required"
|
67
|
-
when "44"
|
67
|
+
when "44"
|
68
68
|
"UPS United States Next Day Air - Saturday Delivery"
|
69
|
-
when "66"
|
69
|
+
when "66"
|
70
70
|
"UPS United States Worldwide Express"
|
71
|
-
when "72"
|
71
|
+
when "72"
|
72
72
|
"UPS United States Ground - Collect on Delivery"
|
73
|
-
when "78"
|
73
|
+
when "78"
|
74
74
|
"UPS United States Ground - Returns Plus - One Pickup Attempt"
|
75
|
-
when "90"
|
75
|
+
when "90"
|
76
76
|
"UPS United States Ground - Returns - UPS Prints and Mails Label"
|
77
|
-
when "A0"
|
77
|
+
when "A0"
|
78
78
|
"UPS United States Next Day Air Early A.M. - Adult Signature Required"
|
79
|
-
when "A1"
|
79
|
+
when "A1"
|
80
80
|
"UPS United States Next Day Air Early A.M. - Saturday Delivery, Adult Signature Required"
|
81
|
-
when "A2"
|
81
|
+
when "A2"
|
82
82
|
"UPS United States Next Day Air - Adult Signature Required"
|
83
|
-
when "A8"
|
83
|
+
when "A8"
|
84
84
|
"UPS United States Ground - Adult Signature Required"
|
85
|
-
when "A9"
|
85
|
+
when "A9"
|
86
86
|
"UPS United States Next Day Air Early A.M. - Adult Signature Required, COD"
|
87
|
-
when "AA"
|
87
|
+
when "AA"
|
88
88
|
"UPS United States Next Day Air Early A.M. - Saturday Delivery, Adult Signature Required, COD"
|
89
89
|
end
|
90
90
|
end
|
data/lib/usps.rb
CHANGED
@@ -4,9 +4,7 @@ class DHLTrackingNumberTest < Test::Unit::TestCase
|
|
4
4
|
context "a DHL tracking number" do
|
5
5
|
["73891051146"].each do |valid_number|
|
6
6
|
should "return dhl for #{valid_number}" do
|
7
|
-
|
8
|
-
assert_equal :dhl, t.carrier
|
9
|
-
assert t.valid?
|
7
|
+
should_be_valid_number(valid_number, TrackingNumber::DHL, :dhl)
|
10
8
|
end
|
11
9
|
|
12
10
|
should "detect #{valid_number} regardless of spacing" do
|
@@ -4,10 +4,7 @@ class FedExTrackingNumberTest < Test::Unit::TestCase
|
|
4
4
|
context "a FedEx tracking number" do
|
5
5
|
["986578788855", "477179081230", "799531274483", "790535312317"].each do |valid_number|
|
6
6
|
should "return fedex express for #{valid_number}" do
|
7
|
-
|
8
|
-
assert_equal TrackingNumber::FedExExpress, t.class
|
9
|
-
assert_equal :fedex, t.carrier
|
10
|
-
assert t.valid?
|
7
|
+
should_be_valid_number(valid_number, TrackingNumber::FedExExpress, :fedex)
|
11
8
|
end
|
12
9
|
|
13
10
|
should "detect #{valid_number} regardless of spacing" do
|
@@ -17,10 +14,7 @@ class FedExTrackingNumberTest < Test::Unit::TestCase
|
|
17
14
|
|
18
15
|
["9611020987654312345672"].each do |valid_number|
|
19
16
|
should "return fedex 96 for #{valid_number}" do
|
20
|
-
|
21
|
-
assert_equal TrackingNumber::FedExGround96, t.class
|
22
|
-
assert_equal :fedex, t.carrier
|
23
|
-
assert t.valid?
|
17
|
+
should_be_valid_number(valid_number, TrackingNumber::FedExGround96, :fedex)
|
24
18
|
end
|
25
19
|
|
26
20
|
should "detect #{valid_number} regardless of spacing" do
|
@@ -30,10 +24,7 @@ class FedExTrackingNumberTest < Test::Unit::TestCase
|
|
30
24
|
|
31
25
|
["0414 4176 0228 964", "5682 8361 0012 000", "5682 8361 0012 734"].each do |valid_number|
|
32
26
|
should "return fedex ground for #{valid_number}" do
|
33
|
-
|
34
|
-
assert_equal TrackingNumber::FedExGround, t.class
|
35
|
-
assert_equal :fedex, t.carrier
|
36
|
-
assert t.valid?
|
27
|
+
should_be_valid_number(valid_number, TrackingNumber::FedExGround, :fedex)
|
37
28
|
end
|
38
29
|
|
39
30
|
should "detect #{valid_number} regardless of spacing" do
|
@@ -43,10 +34,7 @@ class FedExTrackingNumberTest < Test::Unit::TestCase
|
|
43
34
|
|
44
35
|
["00 0123 4500 0000 0027"].each do |valid_number|
|
45
36
|
should "return fedex sscc18 for #{valid_number}" do
|
46
|
-
|
47
|
-
assert_equal TrackingNumber::FedExGround18, t.class
|
48
|
-
assert_equal :fedex, t.carrier
|
49
|
-
assert t.valid?
|
37
|
+
should_be_valid_number(valid_number, TrackingNumber::FedExGround18, :fedex)
|
50
38
|
end
|
51
39
|
|
52
40
|
should "detect #{valid_number} regardless of spacing" do
|
data/test/test_helper.rb
CHANGED
@@ -41,4 +41,11 @@ class Test::Unit::TestCase
|
|
41
41
|
assert_equal 1, results.size, "could not find #{type} #{valid_number} in #{string}"
|
42
42
|
end
|
43
43
|
end
|
44
|
+
|
45
|
+
def should_be_valid_number(valid_number, type, carrier)
|
46
|
+
t = TrackingNumber.new(valid_number)
|
47
|
+
assert_equal type, t.class
|
48
|
+
assert_equal carrier, t.carrier
|
49
|
+
assert t.valid?
|
50
|
+
end
|
44
51
|
end
|
@@ -13,6 +13,11 @@ class TrackingNumberTest < Test::Unit::TestCase
|
|
13
13
|
t = TrackingNumber.new("abc 123 def")
|
14
14
|
assert_equal "ABC123DEF", t.tracking_number
|
15
15
|
end
|
16
|
+
|
17
|
+
should "remove leading and trailing whitespace from tracking number" do
|
18
|
+
t = TrackingNumber.new(" ABC123 \n")
|
19
|
+
assert_equal "ABC123", t.tracking_number
|
20
|
+
end
|
16
21
|
end
|
17
22
|
|
18
23
|
context "tracking number search" do
|
@@ -20,5 +25,11 @@ class TrackingNumberTest < Test::Unit::TestCase
|
|
20
25
|
s = TrackingNumber.search("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 1Z879E930346834440 nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 9611020987654312345672 dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")
|
21
26
|
assert_equal 2, s.size
|
22
27
|
end
|
28
|
+
|
29
|
+
should "return tracking numbers without trailing whitespace" do
|
30
|
+
s = TrackingNumber.search("hello 1Z879E930346834440\nbye")
|
31
|
+
assert_equal 1, s.size
|
32
|
+
assert_equal "1Z879E930346834440", s.first.tracking_number
|
33
|
+
end
|
23
34
|
end
|
24
35
|
end
|
@@ -4,9 +4,7 @@ class UPSTrackingNumberTest < Test::Unit::TestCase
|
|
4
4
|
context "a UPS tracking number" do
|
5
5
|
["1Z5R89390357567127", "1Z879E930346834440", "1Z410E7W0392751591", "1Z8V92A70367203024"].each do |valid_number|
|
6
6
|
should "return ups with valid number #{valid_number}" do
|
7
|
-
|
8
|
-
assert_equal TrackingNumber::UPS, t.class
|
9
|
-
assert_equal :ups, t.carrier
|
7
|
+
should_be_valid_number(valid_number, TrackingNumber::UPS, :ups)
|
10
8
|
end
|
11
9
|
|
12
10
|
should "detect #{valid_number} regardless of spacing" do
|
@@ -4,10 +4,7 @@ class USPSTrackingNumberTest < Test::Unit::TestCase
|
|
4
4
|
context "a USPS tracking number" do
|
5
5
|
["9101 1234 5678 9000 0000 13", "7196 9010 7560 0307 7385"].each do |valid_number|
|
6
6
|
should "return usps with valid 22 digit number: #{valid_number}" do
|
7
|
-
|
8
|
-
assert_equal TrackingNumber::USPS91, t.class
|
9
|
-
assert_equal :usps, t.carrier
|
10
|
-
assert t.valid?
|
7
|
+
should_be_valid_number(valid_number, TrackingNumber::USPS91, :usps)
|
11
8
|
end
|
12
9
|
|
13
10
|
should "detect #{valid_number} regardless of spacing" do
|
@@ -16,24 +13,18 @@ class USPSTrackingNumberTest < Test::Unit::TestCase
|
|
16
13
|
end
|
17
14
|
|
18
15
|
["0307 1790 0005 2348 3741"].each do |valid_number|
|
19
|
-
should "
|
20
|
-
|
16
|
+
should "return usps with valid 20 digit number: #{valid_number}" do
|
17
|
+
should_be_valid_number(valid_number, TrackingNumber::USPS20, :usps)
|
21
18
|
end
|
22
19
|
|
23
|
-
should "
|
24
|
-
|
25
|
-
assert_equal TrackingNumber::USPS20, t.class
|
26
|
-
assert_equal :usps, t.carrier
|
27
|
-
assert t.valid?
|
20
|
+
should "detect #{valid_number} regardless of spacing" do
|
21
|
+
should_detect_number_variants(valid_number, TrackingNumber::USPS20)
|
28
22
|
end
|
29
23
|
end
|
30
24
|
|
31
25
|
["RB123456785US"].each do |valid_number|
|
32
26
|
should "return usps with valid 13 character number #{valid_number}" do
|
33
|
-
|
34
|
-
assert_equal TrackingNumber::USPS13, t.class
|
35
|
-
assert_equal :usps, t.carrier
|
36
|
-
assert t.valid?
|
27
|
+
should_be_valid_number(valid_number, TrackingNumber::USPS13, :usps)
|
37
28
|
end
|
38
29
|
|
39
30
|
should "detect #{valid_number} regardless of spacing" do
|
data/tracking_number.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{tracking_number}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jeff Keen"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-04-23}
|
13
13
|
s.description = %q{Match tracking numbers to a service, and search blocks of text and pull out valid tracking numbers.}
|
14
14
|
s.email = %q{jeff@keen.me}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
|
|
41
41
|
s.homepage = %q{http://github.com/jkeen/tracking_number}
|
42
42
|
s.licenses = ["MIT"]
|
43
43
|
s.require_paths = ["lib"]
|
44
|
-
s.rubygems_version = %q{1.
|
44
|
+
s.rubygems_version = %q{1.6.2}
|
45
45
|
s.summary = %q{Identifies valid tracking numbers}
|
46
46
|
s.test_files = [
|
47
47
|
"test/test_dhl_tracking_number.rb",
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tracking_number
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 17
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 1
|
10
|
-
version: 0.3.1
|
5
|
+
version: 0.3.2
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Jeff Keen
|
@@ -15,69 +10,53 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-04-23 00:00:00 -05:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
17
|
+
name: shoulda
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
19
|
none: false
|
24
20
|
requirements:
|
25
21
|
- - ">="
|
26
22
|
- !ruby/object:Gem::Version
|
27
|
-
hash: 3
|
28
|
-
segments:
|
29
|
-
- 0
|
30
23
|
version: "0"
|
31
|
-
requirement: *id001
|
32
|
-
prerelease: false
|
33
|
-
name: shoulda
|
34
24
|
type: :development
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: *id001
|
35
27
|
- !ruby/object:Gem::Dependency
|
36
|
-
|
28
|
+
name: bundler
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
30
|
none: false
|
38
31
|
requirements:
|
39
32
|
- - ~>
|
40
33
|
- !ruby/object:Gem::Version
|
41
|
-
hash: 23
|
42
|
-
segments:
|
43
|
-
- 1
|
44
|
-
- 0
|
45
|
-
- 0
|
46
34
|
version: 1.0.0
|
47
|
-
requirement: *id002
|
48
|
-
prerelease: false
|
49
|
-
name: bundler
|
50
35
|
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *id002
|
51
38
|
- !ruby/object:Gem::Dependency
|
52
|
-
|
39
|
+
name: jeweler
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
41
|
none: false
|
54
42
|
requirements:
|
55
43
|
- - ~>
|
56
44
|
- !ruby/object:Gem::Version
|
57
|
-
hash: 7
|
58
|
-
segments:
|
59
|
-
- 1
|
60
|
-
- 5
|
61
|
-
- 2
|
62
45
|
version: 1.5.2
|
63
|
-
requirement: *id003
|
64
|
-
prerelease: false
|
65
|
-
name: jeweler
|
66
46
|
type: :development
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *id003
|
67
49
|
- !ruby/object:Gem::Dependency
|
68
|
-
|
50
|
+
name: rcov
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
69
52
|
none: false
|
70
53
|
requirements:
|
71
54
|
- - ">="
|
72
55
|
- !ruby/object:Gem::Version
|
73
|
-
hash: 3
|
74
|
-
segments:
|
75
|
-
- 0
|
76
56
|
version: "0"
|
77
|
-
requirement: *id004
|
78
|
-
prerelease: false
|
79
|
-
name: rcov
|
80
57
|
type: :development
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *id004
|
81
60
|
description: Match tracking numbers to a service, and search blocks of text and pull out valid tracking numbers.
|
82
61
|
email: jeff@keen.me
|
83
62
|
executables: []
|
@@ -122,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
101
|
requirements:
|
123
102
|
- - ">="
|
124
103
|
- !ruby/object:Gem::Version
|
125
|
-
hash:
|
104
|
+
hash: 885733641048498209
|
126
105
|
segments:
|
127
106
|
- 0
|
128
107
|
version: "0"
|
@@ -131,14 +110,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
110
|
requirements:
|
132
111
|
- - ">="
|
133
112
|
- !ruby/object:Gem::Version
|
134
|
-
hash: 3
|
135
|
-
segments:
|
136
|
-
- 0
|
137
113
|
version: "0"
|
138
114
|
requirements: []
|
139
115
|
|
140
116
|
rubyforge_project:
|
141
|
-
rubygems_version: 1.
|
117
|
+
rubygems_version: 1.6.2
|
142
118
|
signing_key:
|
143
119
|
specification_version: 3
|
144
120
|
summary: Identifies valid tracking numbers
|