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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 384fb08ad5f37298a1f005bfa74cd691240ddd34
4
- data.tar.gz: 975e4cc203e8ab982c66bff6fd9351ba4f848d3a
3
+ metadata.gz: 0259d44e42bd8fc86a0d99612041c1b9b2b760a8
4
+ data.tar.gz: 1218348d94e41efc33990fe40af55bbab64c820b
5
5
  SHA512:
6
- metadata.gz: 821ffa6c8e96aa6516201ba1c72b8991208fec87dfa704f98581eb7875f901b090b3d6099733223fb526e3505bf7682aa94cb05c731fbd97d3fb4c880df3cadb
7
- data.tar.gz: b8ba5b6eb1aea5cdc12b259951472063f5e3b859b006b42af33b2c7c91ae31a7ead5d51486525749e0be4cc4fa4480239fa20041a5e2aacd8d9795025d54438e
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", 123, 2, "davy22", 55)
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
- => 123
35
+ => "123ABC"
36
36
  review_response.external_id
37
- => "4321"
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
@@ -2,6 +2,7 @@ require 'cgi'
2
2
 
3
3
  module CRP
4
4
  class ResultMapper
5
+ # Maps the CRP result codes to a human readable message.
5
6
  def self.to_message(code)
6
7
  case code
7
8
  when 1
@@ -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
@@ -19,7 +19,7 @@ module CRP
19
19
  end
20
20
 
21
21
  def internal_id
22
- raw_review.first["internalId"]
22
+ raw_review.first["internalId"].to_s
23
23
  end
24
24
 
25
25
  def external_id
data/lib/crp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module CRP
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/crp.rb CHANGED
@@ -3,6 +3,7 @@ require "crp/review_poster"
3
3
  require "crp/review_response"
4
4
  require "crp/review_callback_response"
5
5
  require "crp/result_mapper"
6
+ require "crp/gender_mapper"
6
7
 
7
8
  module CRP
8
9
  end
@@ -1,6 +1,6 @@
1
1
  [
2
2
  {
3
- "internalId": 123,
4
- "externalId": "4321"
3
+ "internalId": "ABC123",
4
+ "externalId": "321BCA"
5
5
  }
6
6
  ]
@@ -0,0 +1,6 @@
1
+ [
2
+ {
3
+ "internalId": 1234,
4
+ "externalId": "321BCA"
5
+ }
6
+ ]
@@ -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
@@ -8,7 +8,7 @@ module CRP
8
8
  REVIEW_TYPE = 1
9
9
  REVIEW_CONTENT = "I am a very cheerful and good-humored."
10
10
  INTERNAL_REVIEW_ID = "ABCDE12345"
11
- GENDER = 1
11
+ GENDER = :female
12
12
  USERNAME = "starryheart28"
13
13
  AGE = 28
14
14
 
@@ -56,15 +56,33 @@ module CRP
56
56
  end
57
57
 
58
58
  describe :internal_id do
59
- before do
60
- @response = MiniTest::Mock.new # can't set response.body for some reason
61
- @response.expect(:code, "200")
62
- @response.expect(:body, valid_review_body)
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
- it "returns the internal id from the response" do
66
- review_response = ReviewResponse.new(@response)
67
- review_response.internal_id.must_equal(123)
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("4321")
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.1
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-14 00:00:00.000000000 Z
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