Skip to content

Commit c6f8bbf

Browse files
authored
Merge pull request #1356 from code-corps/improve-event-error-tests
Improve event error tests
2 parents 08c0d6e + 882878f commit c6f8bbf

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

lib/code_corps/github/event.ex

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ defmodule CodeCorps.GitHub.Event do
1818
end
1919

2020
@type error :: atom | Changeset.t
21+
@type result :: {:ok, any} | {:error, atom, any}
2122

2223
@doc ~S"""
2324
Sets record status to "processing", marking it as being processed at this
@@ -37,7 +38,7 @@ defmodule CodeCorps.GitHub.Event do
3738
tuple should always be either `:ok`, or `:error`. Any number of elements in
3839
the tuple is suported.
3940
"""
40-
@spec stop_processing(tuple, GithubEvent.t) :: {:ok, GithubEvent.t}
41+
@spec stop_processing(result, GithubEvent.t) :: {:ok, GithubEvent.t}
4142
def stop_processing({:ok, _data}, %GithubEvent{} = event) do
4243
event
4344
|> Changeset.change(%{status: "processed"})

test/lib/code_corps/github/event_test.exs

+27-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ defmodule CodeCorps.GitHub.EventTest do
55

66
alias CodeCorps.{
77
GithubEvent,
8+
GitHub.APIError,
89
GitHub.Event
910
}
1011

@@ -23,11 +24,35 @@ defmodule CodeCorps.GitHub.EventTest do
2324
assert updated_event.status == "processed"
2425
end
2526

26-
test "marks event errored, with failure_reason, if resulting tuple starts with :error" do
27+
test "marks event errored for changeset" do
2728
event = insert(:github_event, status: "processing")
28-
{:ok, %GithubEvent{} = updated_event} = Event.stop_processing({:error, :bar, %{}}, event)
29+
data = %{foo: "bar"}
30+
changeset = %Ecto.Changeset{data: data}
31+
32+
{:ok, %GithubEvent{} = updated_event} =
33+
{:error, :bar, changeset}
34+
|> Event.stop_processing(event)
35+
36+
assert updated_event.data == data |> Kernel.inspect(pretty: true)
37+
assert updated_event.error == changeset |> Kernel.inspect(pretty: true)
38+
assert updated_event.failure_reason == "bar"
2939
assert updated_event.status == "errored"
40+
end
41+
42+
test "marks event errored for API error" do
43+
event = insert(:github_event, status: "processing")
44+
error_body = %{"message" => "bar"}
45+
error_code = 401
46+
error = APIError.new({error_code, error_body})
47+
48+
{:ok, %GithubEvent{} = updated_event} =
49+
{:error, :bar, error}
50+
|> Event.stop_processing(event)
51+
52+
assert updated_event.data == nil
53+
assert updated_event.error == error |> Kernel.inspect(pretty: true)
3054
assert updated_event.failure_reason == "bar"
55+
assert updated_event.status == "errored"
3156
end
3257
end
3358
end

0 commit comments

Comments
 (0)