2eb2c23af3
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
84 lines
2.5 KiB
Elixir
84 lines
2.5 KiB
Elixir
defmodule EventosWeb.FollowerControllerTest do
|
|
use EventosWeb.ConnCase
|
|
|
|
alias Eventos.Actors
|
|
alias Eventos.Actors.Follower
|
|
import Eventos.Factory
|
|
|
|
@create_attrs %{approved: true, score: 42}
|
|
@update_attrs %{approved: false, score: 43}
|
|
@invalid_attrs %{approved: nil, score: nil}
|
|
|
|
setup %{conn: conn} do
|
|
actor = insert(:actor)
|
|
target_actor = insert(:actor)
|
|
|
|
{:ok,
|
|
conn: put_req_header(conn, "accept", "application/json"),
|
|
actor: actor,
|
|
target_actor: target_actor}
|
|
end
|
|
|
|
describe "create follower" do
|
|
test "renders follower when data is valid", %{
|
|
conn: conn,
|
|
actor: actor,
|
|
target_actor: target_actor
|
|
} do
|
|
create_attrs =
|
|
@create_attrs
|
|
|> Map.put(:actor_id, actor.id)
|
|
|> Map.put(:target_actor_id, target_actor.id)
|
|
|
|
conn = post(conn, follower_path(conn, :create), follower: create_attrs)
|
|
assert %{"id" => id} = json_response(conn, 201)["data"]
|
|
|
|
conn = get(conn, follower_path(conn, :show, id))
|
|
assert json_response(conn, 200)["data"] == %{"id" => id, "approved" => true, "score" => 42}
|
|
end
|
|
|
|
test "renders errors when data is invalid", %{conn: conn} do
|
|
conn = post(conn, follower_path(conn, :create), follower: @invalid_attrs)
|
|
assert json_response(conn, 422)["errors"] != %{}
|
|
end
|
|
end
|
|
|
|
describe "update follower" do
|
|
setup [:create_follower]
|
|
|
|
test "renders follower when data is valid", %{
|
|
conn: conn,
|
|
follower: %Follower{id: id} = follower
|
|
} do
|
|
conn = put(conn, follower_path(conn, :update, follower), follower: @update_attrs)
|
|
assert %{"id" => ^id} = json_response(conn, 200)["data"]
|
|
|
|
conn = get(conn, follower_path(conn, :show, id))
|
|
assert json_response(conn, 200)["data"] == %{"id" => id, "approved" => false, "score" => 43}
|
|
end
|
|
|
|
test "renders errors when data is invalid", %{conn: conn, follower: follower} do
|
|
conn = put(conn, follower_path(conn, :update, follower), follower: @invalid_attrs)
|
|
assert json_response(conn, 422)["errors"] != %{}
|
|
end
|
|
end
|
|
|
|
describe "delete follower" do
|
|
setup [:create_follower]
|
|
|
|
test "deletes chosen follower", %{conn: conn, follower: follower} do
|
|
conn = delete(conn, follower_path(conn, :delete, follower))
|
|
assert response(conn, 204)
|
|
|
|
assert_error_sent(404, fn ->
|
|
get(conn, follower_path(conn, :show, follower))
|
|
end)
|
|
end
|
|
end
|
|
|
|
defp create_follower(%{actor: actor, target_actor: target_actor}) do
|
|
follower = insert(:follower, actor: actor, target_actor: target_actor)
|
|
[follower: follower]
|
|
end
|
|
end
|