defmodule ScopesWeb.ConceptControllerTest do use ScopesWeb.ConnCase import Scopes.StorageFixtures alias Scopes.Storage.Concept @create_attrs %{ data: %{}, domain: "some domain", item: "some item", class: "some class" } @update_attrs %{ data: %{}, domain: "some updated domain", item: "some updated item", class: "some updated class" } @invalid_attrs %{data: nil, domain: nil, item: nil, class: nil} setup %{conn: conn} do {:ok, conn: put_req_header(conn, "accept", "application/json")} end describe "index" do test "lists all concepts", %{conn: conn} do conn = get(conn, ~p"/api/concepts") assert json_response(conn, 200)["data"] == [] end end describe "create concept" do test "renders concept when data is valid", %{conn: conn} do conn = post(conn, ~p"/api/concepts", concept: @create_attrs) assert %{"id" => id} = json_response(conn, 201)["data"] conn = get(conn, ~p"/api/concepts/#{id}") assert %{ "id" => ^id, "class" => "some class", "data" => %{}, "domain" => "some domain", "item" => "some item" } = json_response(conn, 200)["data"] end test "renders errors when data is invalid", %{conn: conn} do conn = post(conn, ~p"/api/concepts", concept: @invalid_attrs) assert json_response(conn, 422)["errors"] != %{} end end describe "update concept" do setup [:create_concept] test "renders concept when data is valid", %{conn: conn, concept: %Concept{id: id} = concept} do conn = put(conn, ~p"/api/concepts/#{concept}", concept: @update_attrs) assert %{"id" => ^id} = json_response(conn, 200)["data"] conn = get(conn, ~p"/api/concepts/#{id}") assert %{ "id" => ^id, "class" => "some updated class", "data" => %{}, "domain" => "some updated domain", "item" => "some updated item" } = json_response(conn, 200)["data"] end test "renders errors when data is invalid", %{conn: conn, concept: concept} do conn = put(conn, ~p"/api/concepts/#{concept}", concept: @invalid_attrs) assert json_response(conn, 422)["errors"] != %{} end end describe "delete concept" do setup [:create_concept] test "deletes chosen concept", %{conn: conn, concept: concept} do conn = delete(conn, ~p"/api/concepts/#{concept}") assert response(conn, 204) assert_error_sent 404, fn -> get(conn, ~p"/api/concepts/#{concept}") end end end defp create_concept(_) do concept = concept_fixture() %{concept: concept} end end