melissa 0.0.3 → 0.0.4
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.
- 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
|