defmodule BirdyChatWeb.Api.MessagesTest do use BirdyChatWeb.ConnCase setup %{conn: conn} do url = ~p"/api/messages" conn = conn |> put_req_header("content-type", "application/json") %{conn: conn, url: url} end describe "POST /api/messages" do test "returns errors for invalid message", %{conn: conn, url: url} do payload = Jason.encode!(%{}) conn = post(conn, url, payload) assert result = json_response(conn, :unprocessable_entity) expected_result = %{ "errors" => %{ "from" => ["can't be blank"], "message" => ["can't be blank"], "to" => ["can't be blank"] } } assert result == expected_result end test "returns message and ok when successful", %{conn: conn, url: url} do message = %{"from" => "2-user", "to" => "1-user", "message" => "123"} payload = Jason.encode!(message) conn = post(conn, url, payload) assert result = json_response(conn, :created) assert result == message end end end