leapfrog 0.0.1 → 0.0.2
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/lib/leapfrog/advice.rb +7 -5
- data/lib/leapfrog/customer.rb +8 -6
- data/lib/leapfrog/scoring_client.rb +25 -23
- data/lib/leapfrog/version.rb +1 -1
- data/test/scoring_client_test.rb +5 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7a03d7772abda72869d489f86723be7f422e938
|
4
|
+
data.tar.gz: 288cdcfe8b4642c6081733a3fc004ed2c0601f20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: baa95ef099e564bc8d7554a654993893eb31cff598a3fd65836f2ca6177a69e09ee2d1731037377847211798627258b12a4f3069cc0e20828f2e7c06463ecaa7
|
7
|
+
data.tar.gz: 318c5bee8a13b45158c6ac0d7a84778ad1879bb0d7129ceb79c2370288bb226c8729611420d2e88e33fb7831f2a26eef17d2968f271658a972e6c5b5ea9077ba
|
data/lib/leapfrog/advice.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Leapfrog
|
2
|
+
class Advice
|
3
|
+
attr_reader :propensity, :ranking
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
5
|
+
def initialize(propensity: nil, ranking: nil)
|
6
|
+
@propensity = propensity
|
7
|
+
@ranking = ranking
|
8
|
+
end
|
7
9
|
end
|
8
10
|
end
|
data/lib/leapfrog/customer.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Leapfrog
|
2
|
+
class Customer
|
3
|
+
attr_reader :income, :zipcode, :age
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
def initialize(income, zipcode, age)
|
6
|
+
@income = income
|
7
|
+
@zipcode = zipcode
|
8
|
+
@age = age
|
9
|
+
end
|
8
10
|
end
|
9
11
|
end
|
@@ -1,32 +1,34 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Leapfrog
|
2
|
+
class ScoringClient
|
3
|
+
@@API_URL = "http://internal.leapfrogonline.com/customer_scoring"
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
def score(customer)
|
6
|
+
raise ArgumentError, "income cannot be nil" if customer.income.nil?
|
7
|
+
raise ArgumentError, "zipcode cannot be nil" if customer.zipcode.nil?
|
8
|
+
raise ArgumentError, "age cannot be nil" if customer.age.nil?
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
begin
|
11
|
+
response = RestClient.get(@@API_URL, {params: customer_to_query_params(customer), accept: :json})
|
12
|
+
rescue RestClient::InternalServerError => error
|
13
|
+
raise "Scoring Advice Internal Error"
|
14
|
+
rescue RestClient::Forbidden => error
|
15
|
+
if error.response.code == 403
|
16
|
+
raise ArgumentError, "request parameters invalid"
|
17
|
+
end
|
16
18
|
end
|
19
|
+
|
20
|
+
response_to_advice(response)
|
17
21
|
end
|
18
|
-
|
19
|
-
response_to_advice(response)
|
20
|
-
end
|
21
22
|
|
22
|
-
|
23
|
+
private
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
def customer_to_query_params(customer)
|
26
|
+
{income: customer.income, zipcode: customer.zipcode, age: customer.age}
|
27
|
+
end
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
def response_to_advice(response)
|
30
|
+
data = JSON.parse(response.body, {symbolize_names: true})
|
31
|
+
return Advice.new(data)
|
32
|
+
end
|
31
33
|
end
|
32
34
|
end
|
data/lib/leapfrog/version.rb
CHANGED
data/test/scoring_client_test.rb
CHANGED
@@ -5,23 +5,23 @@ class ScoringClientTest < MiniTest::Unit::TestCase
|
|
5
5
|
WebMock.reset!
|
6
6
|
@api_url = "http://internal.leapfrogonline.com/customer_scoring"
|
7
7
|
@valid_query_params = {income: 50000, zipcode: 60201, age: 35}
|
8
|
-
@valid_customer = Customer.new(50000, 60201, 35)
|
9
|
-
@score_client = ScoringClient.new
|
8
|
+
@valid_customer = Leapfrog::Customer.new(50000, 60201, 35)
|
9
|
+
@score_client = Leapfrog::ScoringClient.new
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_required_customer_attributes
|
13
13
|
assert_raises ArgumentError, "Customer income cannot be nil" do
|
14
|
-
customer = Customer.new(nil, 60657, 21)
|
14
|
+
customer = Leapfrog::Customer.new(nil, 60657, 21)
|
15
15
|
@score_client.score(customer)
|
16
16
|
end
|
17
17
|
|
18
18
|
assert_raises ArgumentError, "Customer zipcode cannot be nil" do
|
19
|
-
customer = Customer.new(10000, nil, 21)
|
19
|
+
customer = Leapfrog::Customer.new(10000, nil, 21)
|
20
20
|
@score_client.score(customer)
|
21
21
|
end
|
22
22
|
|
23
23
|
assert_raises ArgumentError, "Customer age cannot be nil" do
|
24
|
-
customer = Customer.new(10000, 60657, nil)
|
24
|
+
customer = Leapfrog::Customer.new(10000, 60657, nil)
|
25
25
|
@score_client.score(customer)
|
26
26
|
end
|
27
27
|
end
|