melissa 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -1
- data/lib/melissa/addr_obj.rb +7 -0
- data/lib/melissa/addr_obj_live.rb +3 -0
- data/lib/melissa/geo_point.rb +7 -0
- data/lib/melissa/geo_point_live.rb +4 -0
- data/lib/melissa/version.rb +1 -1
- data/melissa.gemspec +1 -0
- data/test/addr_obj_test.rb +47 -11
- data/test/geo_point_test.rb +87 -41
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34019bdcbd74fc8feffc090d650101e0738d358b
|
4
|
+
data.tar.gz: 761cb5a73bd180990f56a0fd0459808bee145b6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11e3f93a13848c6721fe3261a1b6325105f0accf2db16f449ae490539b57b5edb474f23749d27b1a81a190220f94938cf453faf9d3ee5d993cedef138c428262
|
7
|
+
data.tar.gz: 00d2666f21c15258ba0d7aff106a4a03ca06d99b9b188470480e44c15e20b3fd521d1770ea876921d4acbc9a2d09fde90e9d2536e1ea224e21dadc06bad7ddbe
|
data/Gemfile.lock
CHANGED
data/lib/melissa/addr_obj.rb
CHANGED
@@ -52,6 +52,13 @@ module Melissa
|
|
52
52
|
@@good_codes = ['AS01', 'AS02']
|
53
53
|
@@bad_codes = ['AC02', 'AC03']
|
54
54
|
|
55
|
+
@@callbacks = ThreadSafe::Array.new
|
56
|
+
|
57
|
+
# Allow callbacks to intercept response and perform whatever misc stuff (hint: victim_statements)
|
58
|
+
def self.add_callback(&callback)
|
59
|
+
@@callbacks << callback
|
60
|
+
end
|
61
|
+
|
55
62
|
def delivery_point
|
56
63
|
"#{zip}#{plus4}#{delivery_point_code}"
|
57
64
|
end
|
data/lib/melissa/geo_point.rb
CHANGED
@@ -39,6 +39,13 @@ module Melissa
|
|
39
39
|
#@@bad_codes = ['GE01', 'GE02']
|
40
40
|
@@fatal_codes = ['GE03', 'GE04', 'GE05']
|
41
41
|
|
42
|
+
@@callbacks = ThreadSafe::Array.new
|
43
|
+
|
44
|
+
# Allow callbacks to intercept response and perform whatever misc stuff (hint: victim_statements)
|
45
|
+
def self.add_callback(&callback)
|
46
|
+
@@callbacks << callback
|
47
|
+
end
|
48
|
+
|
42
49
|
def valid?
|
43
50
|
# Make sure there is at least 1 good code
|
44
51
|
@is_valid
|
data/lib/melissa/version.rb
CHANGED
data/melissa.gemspec
CHANGED
@@ -18,4 +18,5 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.add_dependency 'activesupport' # added to support underscore method.
|
19
19
|
gem.add_dependency 'minitest' # added as a dependency of activesupport and for testing.
|
20
20
|
gem.add_dependency 'ffi' #used for converting c libraries to ruby
|
21
|
+
gem.add_dependency 'thread_safe' # added to support callbacks
|
21
22
|
end
|
data/test/addr_obj_test.rb
CHANGED
@@ -2,15 +2,14 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class AddrObjTest < Minitest::Test
|
4
4
|
describe Melissa::AddrObj do
|
5
|
-
|
6
|
-
describe "live mode" do
|
5
|
+
describe 'live mode' do
|
7
6
|
before do
|
8
7
|
Melissa.config.mode = :live
|
9
8
|
end
|
10
9
|
|
11
|
-
describe
|
10
|
+
describe 'valid?' do
|
12
11
|
it 'handles valid data' do
|
13
|
-
skip
|
12
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::AddrObjLive.lib_loaded?
|
14
13
|
valid_address = Melissa.addr_obj(
|
15
14
|
address: '2517 Surfwood Dr',
|
16
15
|
city: 'Las Vegas',
|
@@ -26,7 +25,7 @@ class AddrObjTest < Minitest::Test
|
|
26
25
|
end
|
27
26
|
|
28
27
|
it 'flags invalid data' do
|
29
|
-
skip
|
28
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::AddrObjLive.lib_loaded?
|
30
29
|
# Zip points to Schenectady, NY
|
31
30
|
invalid_address = Melissa.addr_obj(
|
32
31
|
address: '123 Who Dr',
|
@@ -38,9 +37,9 @@ class AddrObjTest < Minitest::Test
|
|
38
37
|
end
|
39
38
|
end
|
40
39
|
|
41
|
-
describe
|
40
|
+
describe 'delivery_point' do
|
42
41
|
it 'sets delivery point for valid data' do
|
43
|
-
skip
|
42
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::AddrObjLive.lib_loaded?
|
44
43
|
valid_address = Melissa.addr_obj(
|
45
44
|
address: '2517 Surfwood Dr',
|
46
45
|
city: 'Las Vegas',
|
@@ -53,7 +52,7 @@ class AddrObjTest < Minitest::Test
|
|
53
52
|
|
54
53
|
describe 'number of days till licence expires' do
|
55
54
|
it 'checks if we have more than 30 days till license expiration date' do
|
56
|
-
skip
|
55
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::AddrObjLive.lib_loaded?
|
57
56
|
valid_address = Melissa.addr_obj(
|
58
57
|
:address => '2517 Surfwood Dr',
|
59
58
|
:city => 'Las Vegas',
|
@@ -63,13 +62,32 @@ class AddrObjTest < Minitest::Test
|
|
63
62
|
assert_operator 30, :<, valid_address.class.days_until_license_expiration
|
64
63
|
end
|
65
64
|
end
|
65
|
+
|
66
|
+
describe 'callback' do
|
67
|
+
it 'executes added callback' do
|
68
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::AddrObjLive.lib_loaded?
|
69
|
+
callback_flag = false
|
70
|
+
Melissa::AddrObj.add_callback do
|
71
|
+
callback_flag = true
|
72
|
+
end
|
73
|
+
|
74
|
+
valid_address = Melissa.addr_obj(
|
75
|
+
address: '2517 Surfwood Dr',
|
76
|
+
city: 'Las Vegas',
|
77
|
+
state: 'NV',
|
78
|
+
zip: '89128'
|
79
|
+
)
|
80
|
+
|
81
|
+
assert callback_flag
|
82
|
+
end
|
83
|
+
end
|
66
84
|
end
|
67
85
|
|
68
|
-
describe
|
86
|
+
describe 'mock mode' do
|
69
87
|
before do
|
70
88
|
Melissa.config.mode = :mock
|
71
89
|
end
|
72
|
-
describe
|
90
|
+
describe 'valid?' do
|
73
91
|
it 'handles valid data' do
|
74
92
|
valid_address = Melissa.addr_obj(
|
75
93
|
address: '9802 Brompton Dr',
|
@@ -95,7 +113,7 @@ class AddrObjTest < Minitest::Test
|
|
95
113
|
end
|
96
114
|
end
|
97
115
|
|
98
|
-
describe
|
116
|
+
describe 'delivery_point' do
|
99
117
|
it 'sets delivery point for valid data' do
|
100
118
|
valid_address = Melissa.addr_obj(
|
101
119
|
address: '9802 Brompton Dr',
|
@@ -106,6 +124,24 @@ class AddrObjTest < Minitest::Test
|
|
106
124
|
assert_equal '33626123426', valid_address.delivery_point
|
107
125
|
end
|
108
126
|
end
|
127
|
+
|
128
|
+
describe 'callback' do
|
129
|
+
it 'does not execute added callback' do
|
130
|
+
callback_flag = false
|
131
|
+
Melissa::AddrObj.add_callback do
|
132
|
+
callback_flag = true
|
133
|
+
end
|
134
|
+
|
135
|
+
valid_address = Melissa.addr_obj(
|
136
|
+
address: '2517 Surfwood Dr',
|
137
|
+
city: 'Las Vegas',
|
138
|
+
state: 'NV',
|
139
|
+
zip: '89128'
|
140
|
+
)
|
141
|
+
|
142
|
+
assert !callback_flag
|
143
|
+
end
|
144
|
+
end
|
109
145
|
end
|
110
146
|
end
|
111
147
|
end
|
data/test/geo_point_test.rb
CHANGED
@@ -2,55 +2,101 @@
|
|
2
2
|
require 'test_helper'
|
3
3
|
|
4
4
|
class GeoPointTest < Minitest::Test
|
5
|
-
|
6
5
|
describe Melissa::GeoPoint do
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
describe 'live mode' do
|
7
|
+
before do
|
8
|
+
Melissa.config.mode = :live
|
9
|
+
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
describe 'valid?' do
|
12
|
+
it 'creates valid GeoPoint object from valid Address Object' do
|
13
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::GeoPointLive.lib_loaded?
|
14
|
+
valid_addr_obj = Melissa.addr_obj(
|
15
15
|
address: '2517 SURFWOOD DR',
|
16
|
-
city:
|
17
|
-
state:
|
18
|
-
zip:
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
zip:
|
31
|
-
plus4:
|
16
|
+
city: 'LAS VEGAS',
|
17
|
+
state: 'NV',
|
18
|
+
zip: '89128'
|
19
|
+
)
|
20
|
+
geo_point_obj = Melissa.geo_point(valid_addr_obj)
|
21
|
+
assert geo_point_obj.valid?
|
22
|
+
assert_includes 36.2..36.3, geo_point_obj.latitude
|
23
|
+
assert_includes -115.3..-115.2, geo_point_obj.longitude
|
24
|
+
offset = Time.now.in_time_zone('US/Pacific').dst? ? 420 : 480
|
25
|
+
assert_equal offset, geo_point_obj.time_zone_offset(valid_addr_obj.state)
|
26
|
+
end
|
27
|
+
it 'creates valid GeoPoint object from the Hash' do
|
28
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::GeoPointLive.lib_loaded?
|
29
|
+
geo_point_obj= Melissa.geo_point(
|
30
|
+
zip: '89128',
|
31
|
+
plus4: '7182',
|
32
32
|
delivery_point_code: '17'
|
33
|
-
|
33
|
+
)
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
assert geo_point_obj.valid?
|
36
|
+
assert_includes 36.2..36.3, geo_point_obj.latitude
|
37
|
+
assert_includes -115.3..-115.2, geo_point_obj.longitude
|
38
|
+
offset = Time.now.in_time_zone('US/Pacific').dst? ? 420 : 480
|
39
|
+
assert_equal offset, geo_point_obj.time_zone_offset
|
40
|
+
end
|
40
41
|
end
|
41
|
-
end
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
describe 'number of days till licence expires' do
|
44
|
+
it 'checks if we have more than 30 days till license expiration date' do
|
45
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::GeoPointLive.lib_loaded?
|
46
|
+
valid_addr_obj = Melissa.addr_obj(
|
47
|
+
address: '2517 SURFWOOD DR',
|
48
|
+
city: 'LAS VEGAS',
|
49
|
+
state: 'NV',
|
50
|
+
zip: '89128'
|
51
|
+
)
|
52
|
+
geo_point = Melissa.geo_point(valid_addr_obj)
|
53
|
+
assert_operator 30, :<, geo_point.class.days_until_license_expiration
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe 'callback' do
|
58
|
+
it 'executes added callback' do
|
59
|
+
skip 'Not run, Melissa library not loaded' unless Melissa::GeoPointLive.lib_loaded?
|
60
|
+
callback_flag = false
|
61
|
+
Melissa::GeoPoint.add_callback do
|
62
|
+
callback_flag = true
|
63
|
+
end
|
64
|
+
|
65
|
+
valid_addr_obj = Melissa.addr_obj(
|
47
66
|
address: '2517 SURFWOOD DR',
|
48
|
-
city:
|
49
|
-
state:
|
50
|
-
zip:
|
51
|
-
|
52
|
-
|
53
|
-
|
67
|
+
city: 'LAS VEGAS',
|
68
|
+
state: 'NV',
|
69
|
+
zip: '89128'
|
70
|
+
)
|
71
|
+
Melissa.geo_point(valid_addr_obj)
|
72
|
+
|
73
|
+
assert callback_flag
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe 'mock mode' do
|
79
|
+
before do
|
80
|
+
Melissa.config.mode = :mock
|
81
|
+
end
|
82
|
+
|
83
|
+
describe 'callback' do
|
84
|
+
it 'does not execute added callback' do
|
85
|
+
callback_flag = false
|
86
|
+
Melissa::AddrObj.add_callback do
|
87
|
+
callback_flag = true
|
88
|
+
end
|
89
|
+
|
90
|
+
valid_addr_obj = Melissa.addr_obj(
|
91
|
+
address: '2517 Surfwood Dr',
|
92
|
+
city: 'Las Vegas',
|
93
|
+
state: 'NV',
|
94
|
+
zip: '89128'
|
95
|
+
)
|
96
|
+
Melissa.geo_point(valid_addr_obj)
|
97
|
+
|
98
|
+
assert !callback_flag
|
99
|
+
end
|
54
100
|
end
|
55
101
|
end
|
56
102
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: melissa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brad Pardee
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-09-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: thread_safe
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
56
70
|
description: Configurable interface to Melissa Data Address and GeoPoint objects
|
57
71
|
email:
|
58
72
|
- bradpardee@gmail.com
|