defmodule NullaWeb.Api.LikeControllerTest do use NullaWeb.ConnCase import Nulla.ActorsFixtures import Nulla.NotesFixtures import Nulla.LikesFixtures alias Nulla.Likes.Like @invalid_attrs %{ actor_id: nil, note_id: nil } setup %{conn: conn} do {:ok, conn: put_req_header(conn, "accept", "application/json")} end describe "index" do test "lists all likes", %{conn: conn} do conn = get(conn, ~p"/api/likes") assert json_response(conn, 200)["data"] == [] end end describe "create like" do test "renders like when data is valid", %{conn: conn} do actor = actor_fixture() note = note_fixture() create_attrs = %{ actor_id: actor.id, note_id: note.id } conn = post(conn, ~p"/api/likes", like: create_attrs) assert %{"id" => id} = json_response(conn, 201)["data"] conn = get(conn, ~p"/api/likes/#{id}") assert %{ "id" => ^id } = json_response(conn, 200)["data"] end test "renders errors when data is invalid", %{conn: conn} do conn = post(conn, ~p"/api/likes", like: @invalid_attrs) assert json_response(conn, 422)["errors"] != %{} end end describe "update like" do setup [:create_like] test "renders like when data is valid", %{conn: conn, like: %Like{id: id} = like} do actor = actor_fixture() note = note_fixture() update_attrs = %{ actor_id: actor.id, note_id: note.id } conn = put(conn, ~p"/api/likes/#{like}", like: update_attrs) assert %{"id" => ^id} = json_response(conn, 200)["data"] conn = get(conn, ~p"/api/likes/#{id}") assert %{ "id" => ^id } = json_response(conn, 200)["data"] end test "renders errors when data is invalid", %{conn: conn, like: like} do conn = put(conn, ~p"/api/likes/#{like}", like: @invalid_attrs) assert json_response(conn, 422)["errors"] != %{} end end describe "delete like" do setup [:create_like] test "deletes chosen like", %{conn: conn, like: like} do conn = delete(conn, ~p"/api/likes/#{like}") assert response(conn, 204) assert_error_sent 404, fn -> get(conn, ~p"/api/likes/#{like}") end end end defp create_like(_) do like = like_fixture() %{like: like} end end