Skip to content
This repository was archived by the owner on Sep 1, 2025. It is now read-only.

Commit bc913ae

Browse files
authored
Merge pull request #22 from StuartApp/handle_204_no_content
handle 204 No Content response
2 parents 248497c + d244379 commit bc913ae

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

lib/stuart_client_elixir/http_client.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ defmodule StuartClientElixir.HttpClient do
6666
]
6767
end
6868

69+
defp to_api_response({:ok, %HTTPoison.Response{status_code: 204}}) do
70+
%{status_code: 204, body: ""}
71+
end
72+
6973
defp to_api_response({:ok, %HTTPoison.Response{status_code: status_code, body: body}}) do
7074
%{status_code: status_code, body: Jason.decode!(body)}
7175
end

test/stuart_client_elixir/http_client_test.exs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,16 +150,39 @@ defmodule StuartClientElixirTest.HttpClientTest do
150150
end
151151
end
152152

153+
describe "handles 204 no content response" do
154+
@expected_no_content_response %{status_code: 204, body: ""}
155+
156+
test "204 no content in GET" do
157+
assert HttpClient.get("/no_content", config()) == @expected_no_content_response
158+
end
159+
160+
test "204 no content in POST" do
161+
assert HttpClient.post("/no_content", sample_request_body(), config()) ==
162+
@expected_no_content_response
163+
end
164+
165+
test "204 no content in PATCH" do
166+
assert HttpClient.patch("/no_content", sample_request_body(), config()) ==
167+
@expected_no_content_response
168+
end
169+
end
170+
153171
#####################
154172
# Private functions #
155173
#####################
156174

157175
@timeout_url "https://sandbox-api.stuart.com/timeout"
176+
@no_content_url "https://sandbox-api.stuart.com/no_content"
158177

159178
defp response(_, @timeout_url) do
160179
{:error, %HTTPoison.Error{id: nil, reason: :timeout}}
161180
end
162181

182+
defp response(_, @no_content_url) do
183+
{:ok, %HTTPoison.Response{status_code: 204, body: ""}}
184+
end
185+
163186
defp response(:get, _) do
164187
{:ok, %HTTPoison.Response{status_code: 200, body: Jason.encode!(%{sample: "get response"})}}
165188
end

0 commit comments

Comments
 (0)