Skip to content

Commit 5dc69a1

Browse files
Max Beizerarmahillo
authored andcommitted
Add DiaperPartnerClient specs (#1085)
* Add first diaper partner client spec * Add spec for ::post * Add spec for ::put * Refactor out request stub helper method
1 parent 1698a73 commit 5dc69a1

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
require 'spec_helper'
2+
require_relative '../support/env_helper'
3+
4+
RSpec.describe DiaperPartnerClient, type: :service do
5+
before do
6+
stub_env('PARTNER_REGISTER_URL', 'https://partner-register.com')
7+
stub_env('PARTNER_KEY', 'partner-key')
8+
end
9+
10+
describe '::post' do
11+
it 'performs a POST request' do
12+
attributes = { 'id' => 123, 'organization_id' => 456, 'email' => '[email protected]' }
13+
expected_body = {
14+
partner:
15+
{
16+
diaper_bank_id: attributes["organization_id"],
17+
diaper_partner_id: attributes["id"],
18+
email: attributes["email"]
19+
}
20+
}.to_json
21+
stub_partner_request(:post, 'https://partner-register.com/', body: expected_body)
22+
result = DiaperPartnerClient.post(attributes)
23+
expect(result).to eq 'success'
24+
end
25+
end
26+
27+
describe '::get' do
28+
it 'performs a GET request' do
29+
stub_partner_request(:get, 'https://partner-register.com/123')
30+
result = DiaperPartnerClient.get(id: 123)
31+
expect(result).to eq 'success'
32+
end
33+
end
34+
35+
describe '::put' do
36+
it 'performs a PUT request' do
37+
attributes = { partner_id: 123, status: 'status' }
38+
expected_body = {
39+
partner: {
40+
diaper_partner_id: attributes[:partner_id],
41+
status: attributes[:status]
42+
}
43+
}.to_json
44+
stub_partner_request(:put, 'https://partner-register.com/123', body: expected_body)
45+
result = DiaperPartnerClient.put(attributes)
46+
expect(result.body).to eq 'success'
47+
end
48+
end
49+
50+
private
51+
52+
def stub_partner_request(method, url, request = {}, response = {})
53+
stub_request(method, url)
54+
.with({
55+
headers: {
56+
'Accept' => '*/*',
57+
'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
58+
'Content-Type' => 'application/json',
59+
'Host' => 'partner-register.com',
60+
'User-Agent' => 'Ruby',
61+
'X-Api-Key' => 'partner-key'
62+
}
63+
}.merge(request))
64+
.to_return({ status: 200, body: 'success', headers: {} }.merge(response))
65+
end
66+
end

0 commit comments

Comments
 (0)