Skip to content

Commit

Permalink
Merge pull request #1356 from code-corps/improve-event-error-tests
Browse files Browse the repository at this point in the history
Improve event error tests
  • Loading branch information
joshsmith committed Dec 29, 2017
2 parents 08c0d6e + 882878f commit c6f8bbf
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
3 changes: 2 additions & 1 deletion lib/code_corps/github/event.ex
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ defmodule CodeCorps.GitHub.Event do
end

@type error :: atom | Changeset.t
@type result :: {:ok, any} | {:error, atom, any}

@doc ~S"""
Sets record status to "processing", marking it as being processed at this
Expand All @@ -37,7 +38,7 @@ defmodule CodeCorps.GitHub.Event do
tuple should always be either `:ok`, or `:error`. Any number of elements in
the tuple is suported.
"""
@spec stop_processing(tuple, GithubEvent.t) :: {:ok, GithubEvent.t}
@spec stop_processing(result, GithubEvent.t) :: {:ok, GithubEvent.t}
def stop_processing({:ok, _data}, %GithubEvent{} = event) do
event
|> Changeset.change(%{status: "processed"})
Expand Down
29 changes: 27 additions & 2 deletions test/lib/code_corps/github/event_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ defmodule CodeCorps.GitHub.EventTest do

alias CodeCorps.{
GithubEvent,
GitHub.APIError,
GitHub.Event
}

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

test "marks event errored, with failure_reason, if resulting tuple starts with :error" do
test "marks event errored for changeset" do
event = insert(:github_event, status: "processing")
{:ok, %GithubEvent{} = updated_event} = Event.stop_processing({:error, :bar, %{}}, event)
data = %{foo: "bar"}
changeset = %Ecto.Changeset{data: data}

{:ok, %GithubEvent{} = updated_event} =
{:error, :bar, changeset}
|> Event.stop_processing(event)

assert updated_event.data == data |> Kernel.inspect(pretty: true)
assert updated_event.error == changeset |> Kernel.inspect(pretty: true)
assert updated_event.failure_reason == "bar"
assert updated_event.status == "errored"
end

test "marks event errored for API error" do
event = insert(:github_event, status: "processing")
error_body = %{"message" => "bar"}
error_code = 401
error = APIError.new({error_code, error_body})

{:ok, %GithubEvent{} = updated_event} =
{:error, :bar, error}
|> Event.stop_processing(event)

assert updated_event.data == nil
assert updated_event.error == error |> Kernel.inspect(pretty: true)
assert updated_event.failure_reason == "bar"
assert updated_event.status == "errored"
end
end
end

0 comments on commit c6f8bbf

Please sign in to comment.