crp 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/README.md +4 -4
- data/lib/crp/gender_mapper.rb +19 -0
- data/lib/crp/result_mapper.rb +1 -0
- data/lib/crp/review_poster.rb +3 -1
- data/lib/crp/review_response.rb +1 -1
- data/lib/crp/version.rb +1 -1
- data/lib/crp.rb +1 -0
- data/test/fixtures/valid_review.json +2 -2
- data/test/fixtures/valid_review_with_integer_internal_id.json +6 -0
- data/test/gender_mapper_test.rb +59 -0
- data/test/review_poster_test.rb +1 -1
- data/test/review_response_test.rb +26 -8
- data/test/test_helper.rb +4 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0259d44e42bd8fc86a0d99612041c1b9b2b760a8
|
4
|
+
data.tar.gz: 1218348d94e41efc33990fe40af55bbab64c820b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1c330c3b805c2723d508c3f74c964d0f6324eb077122c94ecc4f64a741493911d984caa2267969740ddc7887a7cad8a10d287a4fe6b06802827505567f3b41c
|
7
|
+
data.tar.gz: 573dff2c07ebcf0193bcc7624ae9fac7773205be8e2c0fe121b04de3630ed8dc679a9d719ab25363b97fb57c82bf2c3c44711b273da9d2faa2a5635e915d86a8
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@ The **C**entral **R**eview **P**latform is a platform to review user uploaded da
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
The CRP gem is Ruby 1.9.x and 2.0.x compatible.
|
7
|
+
The CRP gem is Ruby 1.9.x and 2.0.x compatible and hosted on [RubyGems](https://rubygems.org/gems/crp).
|
8
8
|
|
9
9
|
Add this line to your application's Gemfile:
|
10
10
|
|
@@ -27,14 +27,14 @@ require "crp"
|
|
27
27
|
=> true
|
28
28
|
review_poster = CRP::ReviewPoster.new("crp.example.com", "client", "key")
|
29
29
|
=> #<CRP::ReviewPoster:0x007fa2c1119110 @host="crp.example.com", @client="client", @key="key">
|
30
|
-
review_response = review_poster.new_review(1, "davy22",
|
30
|
+
review_response = review_poster.new_review(1, "davy22", "123ABC", :female, "davy22", 55)
|
31
31
|
=> #<CRP::ReviewResponse:0x007fa87c1fd020 @response=#<Net::HTTPOK 200 OK readbody=true>>
|
32
32
|
review_response.successful?
|
33
33
|
=> true
|
34
34
|
review_response.internal_id
|
35
|
-
=>
|
35
|
+
=> "123ABC"
|
36
36
|
review_response.external_id
|
37
|
-
=> "
|
37
|
+
=> "ABCD1234"
|
38
38
|
````
|
39
39
|
|
40
40
|
You can skip the host, client and key parameters and specify the `ENV['CRP_HOST']`, `ENV['CRP_CLIENT']` and `ENV['CRP_KEY']` environment variable for convenience.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
|
3
|
+
module CRP
|
4
|
+
GENDER_NAME_CODES = { 1 => :female, 2 => :male }
|
5
|
+
|
6
|
+
class GenderMapper
|
7
|
+
# Maps the +:unknown+, +:female+ or +:male+ gender names to their respective CRP
|
8
|
+
# gender codes. Invalid gender names will reeturn the unknown gender code of +0+.
|
9
|
+
def self.to_code(name)
|
10
|
+
GENDER_NAME_CODES.invert[name] || 0
|
11
|
+
end
|
12
|
+
|
13
|
+
# Maps the CRP gender codes to the more friendly +:unknown+, +:female+ or +:male+ gender
|
14
|
+
# names. Invalid codes wil return an +:unknown+ gender name.
|
15
|
+
def self.to_name(code)
|
16
|
+
GENDER_NAME_CODES[code] || :unknown
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/crp/result_mapper.rb
CHANGED
data/lib/crp/review_poster.rb
CHANGED
@@ -16,6 +16,7 @@ module CRP
|
|
16
16
|
@key = key
|
17
17
|
end
|
18
18
|
|
19
|
+
# Submits a new profile review to CRP.
|
19
20
|
def new_review(review_type, review_content, internal_review_id, gender, username, age)
|
20
21
|
uri = new_review_url(review_type, review_content, internal_review_id, gender, username, age)
|
21
22
|
http = Net::HTTP.new(uri.host, uri.port)
|
@@ -26,12 +27,13 @@ module CRP
|
|
26
27
|
ReviewResponse.new(response)
|
27
28
|
end
|
28
29
|
|
30
|
+
# Builds a new URL needed to submit a profile review to CRP.
|
29
31
|
def new_review_url(review_type, review_content, internal_review_id, gender, username, age)
|
30
32
|
arguments = [{
|
31
33
|
reviewType: review_type,
|
32
34
|
reviewContent: review_content,
|
33
35
|
internalReviewId: internal_review_id,
|
34
|
-
gender: gender,
|
36
|
+
gender: GenderMapper.to_code(gender),
|
35
37
|
username: username,
|
36
38
|
age: age
|
37
39
|
}].to_json
|
data/lib/crp/review_response.rb
CHANGED
data/lib/crp/version.rb
CHANGED
data/lib/crp.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module CRP
|
6
|
+
describe GenderMapper do
|
7
|
+
describe :to_code do
|
8
|
+
describe "when the gender is unknown" do
|
9
|
+
it "returns code 0" do
|
10
|
+
GenderMapper.to_code(:unknown).must_equal(0)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "when the gender is female" do
|
15
|
+
it "returns code 1" do
|
16
|
+
GenderMapper.to_code(:female).must_equal(1)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "when the gender is male" do
|
21
|
+
it "returns code 2" do
|
22
|
+
GenderMapper.to_code(:male).must_equal(2)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "when the gender is not :unknown, :female or :male" do
|
27
|
+
it "returns code 0" do
|
28
|
+
GenderMapper.to_code(:alien).must_equal(0)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe :to_name do
|
34
|
+
describe "when the code is 0" do
|
35
|
+
it "returns unknown as gender" do
|
36
|
+
GenderMapper.to_name(0).must_equal(:unknown)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "when the code is 1" do
|
41
|
+
it "returns female as gender" do
|
42
|
+
GenderMapper.to_name(1).must_equal(:female)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "when the code is 2" do
|
47
|
+
it "returns male as gender" do
|
48
|
+
GenderMapper.to_name(2).must_equal(:male)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "when the code is not 0, 1 or 2" do
|
53
|
+
it "returns :unknown as gender" do
|
54
|
+
GenderMapper.to_name(99).must_equal(:unknown)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/test/review_poster_test.rb
CHANGED
@@ -56,15 +56,33 @@ module CRP
|
|
56
56
|
end
|
57
57
|
|
58
58
|
describe :internal_id do
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
describe "when the internal id is a string" do
|
60
|
+
before do
|
61
|
+
@response = MiniTest::Mock.new # can't set response.body for some reason
|
62
|
+
@response.expect(:code, "200")
|
63
|
+
@response.expect(:body, valid_review_body)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "returns the internal id from the response string" do
|
67
|
+
review_response = ReviewResponse.new(@response)
|
68
|
+
review_response.internal_id.must_equal("ABC123")
|
69
|
+
end
|
63
70
|
end
|
64
71
|
|
65
|
-
|
66
|
-
|
67
|
-
|
72
|
+
describe "when the internal id is an integer" do
|
73
|
+
before do
|
74
|
+
@response = MiniTest::Mock.new # can't set response.body for some reason
|
75
|
+
@response.expect(:code, "200")
|
76
|
+
@response.expect(:body, valid_review_body_with_integer_internal_id)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "returns the internal id from the response as a string" do
|
80
|
+
# The first CRP response keeps the type you sent it but all subsequent reviews
|
81
|
+
# will return the intenal id as a string so abstract this away by always
|
82
|
+
# returning a string from the gem
|
83
|
+
review_response = ReviewResponse.new(@response)
|
84
|
+
review_response.internal_id.must_equal("1234")
|
85
|
+
end
|
68
86
|
end
|
69
87
|
end
|
70
88
|
|
@@ -77,7 +95,7 @@ module CRP
|
|
77
95
|
|
78
96
|
it "returns the external id from the response" do
|
79
97
|
review_response = ReviewResponse.new(@response)
|
80
|
-
review_response.external_id.must_equal("
|
98
|
+
review_response.external_id.must_equal("321BCA")
|
81
99
|
end
|
82
100
|
end
|
83
101
|
end
|
data/test/test_helper.rb
CHANGED
@@ -10,6 +10,10 @@ def valid_review_body
|
|
10
10
|
@valid_review_body ||= File.read(File.join(FIXTURES_PATH, 'valid_review.json'))
|
11
11
|
end
|
12
12
|
|
13
|
+
def valid_review_body_with_integer_internal_id
|
14
|
+
@valid_review_body_with_integer_internal_id ||= File.read(File.join(FIXTURES_PATH, 'valid_review_with_integer_internal_id.json'))
|
15
|
+
end
|
16
|
+
|
13
17
|
def valid_callback_review_body
|
14
18
|
@valid_callback_review_body ||= File.read(File.join(FIXTURES_PATH, 'valid_callback_review.txt')).chomp
|
15
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Agile Wings
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: webmock
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- Rakefile
|
53
53
|
- crp.gemspec
|
54
54
|
- lib/crp.rb
|
55
|
+
- lib/crp/gender_mapper.rb
|
55
56
|
- lib/crp/result_mapper.rb
|
56
57
|
- lib/crp/review_callback_response.rb
|
57
58
|
- lib/crp/review_poster.rb
|
@@ -59,6 +60,8 @@ files:
|
|
59
60
|
- lib/crp/version.rb
|
60
61
|
- test/fixtures/valid_callback_review.txt
|
61
62
|
- test/fixtures/valid_review.json
|
63
|
+
- test/fixtures/valid_review_with_integer_internal_id.json
|
64
|
+
- test/gender_mapper_test.rb
|
62
65
|
- test/result_mapper_test.rb
|
63
66
|
- test/review_callback_response_test.rb
|
64
67
|
- test/review_poster_test.rb
|
@@ -92,6 +95,8 @@ summary: The Central Review Platform is a platform to review user uploaded data.
|
|
92
95
|
test_files:
|
93
96
|
- test/fixtures/valid_callback_review.txt
|
94
97
|
- test/fixtures/valid_review.json
|
98
|
+
- test/fixtures/valid_review_with_integer_internal_id.json
|
99
|
+
- test/gender_mapper_test.rb
|
95
100
|
- test/result_mapper_test.rb
|
96
101
|
- test/review_callback_response_test.rb
|
97
102
|
- test/review_poster_test.rb
|