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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38aa1440526f55f5a85a72c7f8474cffeedc34f9
4
- data.tar.gz: 8f618410d0d128f51273b1b7f8a7e19d3070698b
3
+ metadata.gz: 34019bdcbd74fc8feffc090d650101e0738d358b
4
+ data.tar.gz: 761cb5a73bd180990f56a0fd0459808bee145b6c
5
5
  SHA512:
6
- metadata.gz: a9437c18332658936df21a8c11ca0a05e1d92ce49c4cc928fbfabf6eb76d98f97318eb36dab36718524e71717643fcedba6ad2146179ac60081677e203a35eb1
7
- data.tar.gz: 9b6b1801c36d49882e1e481715c59167f7ab50501674ea5af1285e985d9cb791ab0fd5c5999707326b31050727da02d9efa7031d925151500dc8e4eb71dfdd0d
6
+ metadata.gz: 11e3f93a13848c6721fe3261a1b6325105f0accf2db16f449ae490539b57b5edb474f23749d27b1a81a190220f94938cf453faf9d3ee5d993cedef138c428262
7
+ data.tar.gz: 00d2666f21c15258ba0d7aff106a4a03ca06d99b9b188470480e44c15e20b3fd521d1770ea876921d4acbc9a2d09fde90e9d2536e1ea224e21dadc06bad7ddbe
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- melissa (0.0.3)
4
+ melissa (0.0.4)
5
5
  activesupport
6
6
  ffi
7
7
  minitest
8
+ thread_safe
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
@@ -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
@@ -115,6 +115,9 @@ module Melissa
115
115
  @resultcodes = mdAddrGetResults(h_addr_lib).split(',')
116
116
  fill_attributes(h_addr_lib)
117
117
  end
118
+ @@callbacks.each do |callback|
119
+ callback.call
120
+ end
118
121
  end
119
122
 
120
123
  def valid?
@@ -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
@@ -129,6 +129,10 @@ module Melissa
129
129
  end
130
130
  end
131
131
  end
132
+
133
+ @@callbacks.each do |callback|
134
+ callback.call
135
+ end
132
136
  end
133
137
  end
134
138
  end
@@ -1,3 +1,3 @@
1
1
  module Melissa
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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
@@ -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 "valid?" do
10
+ describe 'valid?' do
12
11
  it 'handles valid data' do
13
- skip "Not run, Melissa library not loaded" unless Melissa::AddrObjLive.lib_loaded?
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 "Not run, Melissa library not loaded" unless Melissa::AddrObjLive.lib_loaded?
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 "delivery_point" do
40
+ describe 'delivery_point' do
42
41
  it 'sets delivery point for valid data' do
43
- skip "Not run, Melissa library not loaded" unless Melissa::AddrObjLive.lib_loaded?
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 "Not run, Melissa library not loaded" unless Melissa::AddrObjLive.lib_loaded?
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 "mock mode" do
86
+ describe 'mock mode' do
69
87
  before do
70
88
  Melissa.config.mode = :mock
71
89
  end
72
- describe "valid?" do
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 "delivery_point" do
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
@@ -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
- before do
8
- Melissa.config.mode = :live
9
- end
6
+ describe 'live mode' do
7
+ before do
8
+ Melissa.config.mode = :live
9
+ end
10
10
 
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(
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: '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',
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
- 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
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
- 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(
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: '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
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.3
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-05-13 00:00:00.000000000 Z
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