Files
GenericRestServer/test/generic_rest_server_web/controllers/item_controller_test.exs

107 lines
3.0 KiB
Elixir

defmodule GenericRestServerWeb.ItemControllerTest do
use GenericRestServerWeb.ConnCase
import GenericRestServer.ItemsFixtures
alias GenericRestServer.Items.Item
@create_attrs %{
info: "some info",
name: "some name",
type: "some type",
description: "some description",
amount: 42,
factor: 120.5
}
@update_attrs %{
info: "some updated info",
name: "some updated name",
type: "some updated type",
description: "some updated description",
amount: 43,
factor: 456.7
}
@invalid_attrs %{info: nil, name: nil, type: nil, description: nil, amount: nil, factor: nil}
setup :register_and_log_in_user
setup %{conn: conn} do
{:ok, conn: put_req_header(conn, "accept", "application/json")}
end
describe "index" do
test "lists all items", %{conn: conn} do
conn = get(conn, ~p"/api/items")
assert json_response(conn, 200)["data"] == []
end
end
describe "create item" do
test "renders item when data is valid", %{conn: conn} do
conn = post(conn, ~p"/api/items", item: @create_attrs)
assert %{"id" => id} = json_response(conn, 201)["data"]
conn = get(conn, ~p"/api/items/#{id}")
assert %{
"id" => ^id,
"amount" => 42,
"description" => "some description",
"factor" => 120.5,
"info" => "some info",
"name" => "some name",
"type" => "some type"
} = json_response(conn, 200)["data"]
end
test "renders errors when data is invalid", %{conn: conn} do
conn = post(conn, ~p"/api/items", item: @invalid_attrs)
assert json_response(conn, 422)["errors"] != %{}
end
end
describe "update item" do
setup [:create_item]
test "renders item when data is valid", %{conn: conn, item: %Item{id: id} = item} do
conn = put(conn, ~p"/api/items/#{item}", item: @update_attrs)
assert %{"id" => ^id} = json_response(conn, 200)["data"]
conn = get(conn, ~p"/api/items/#{id}")
assert %{
"id" => ^id,
"amount" => 43,
"description" => "some updated description",
"factor" => 456.7,
"info" => "some updated info",
"name" => "some updated name",
"type" => "some updated type"
} = json_response(conn, 200)["data"]
end
test "renders errors when data is invalid", %{conn: conn, item: item} do
conn = put(conn, ~p"/api/items/#{item}", item: @invalid_attrs)
assert json_response(conn, 422)["errors"] != %{}
end
end
describe "delete item" do
setup [:create_item]
test "deletes chosen item", %{conn: conn, item: item} do
conn = delete(conn, ~p"/api/items/#{item}")
assert response(conn, 204)
assert_error_sent 404, fn ->
get(conn, ~p"/api/items/#{item}")
end
end
end
defp create_item(%{scope: scope}) do
item = item_fixture(scope)
%{item: item}
end
end