Skip to content

Commit

Permalink
WIP - Return an error when launching a campaign with a channel alread…
Browse files Browse the repository at this point in the history
…y in use
  • Loading branch information
matiasgarciaisaia committed Nov 27, 2017
1 parent 790ff08 commit da38261
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 2 deletions.
15 changes: 15 additions & 0 deletions test/controllers/campaigns_controller_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,23 @@ defmodule ActiveMonitoring.CampaignsControllerTest do
end
end

describe "errors" do
setup [:with_started_campaign]

test "launch", %{conn: conn, campaign: campaign, user: user} do
new_campaign = build(:campaign, user: user, channel: campaign.channel) |> Repo.insert!
conn = conn |> put(campaigns_launch_path(conn, :launch, campaign))
assert json_response(conn, 403) == %{"errors" => %{"channel" => "already in use"}}
end
end

defp with_user_campaign %{user: user} do
campaign = build(:campaign, user: user) |> Repo.insert!
[campaign: campaign]
end

defp with_started_campaign %{user: user} do
campaign = build(:campaign, user: user, channel: "a.channel", started_at: Ecto.DateTime.utc()) |> Repo.insert!
[campaign: campaign]
end
end
4 changes: 2 additions & 2 deletions web/controllers/campaigns_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ defmodule ActiveMonitoring.CampaignsController do
render(conn, "show.json", campaign: campaign, calls: calls, subjects: subjects)

{:error, changeset} ->
render(conn, ChangesetView, "error.json", changeset: changeset)
put_status(conn, 403) |> render(ChangesetView, "error.json", changeset: changeset)
end
else
render(conn, ChangesetView, "error.json", changeset: changeset)
put_status(conn, 403) |> render(ChangesetView, "error.json", errors: %{channel: "already in use"})
end
end

Expand Down
4 changes: 4 additions & 0 deletions web/views/changeset_view.ex
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,8 @@ defmodule ActiveMonitoring.ChangesetView do
# as a JSON object. So we just pass it forward.
%{errors: translate_errors(changeset)}
end

def render("error.json", %{errors: errors}) do
%{errors: errors}
end
end

0 comments on commit da38261

Please sign in to comment.