leapfrog 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|