defmodule OutlookWeb.AutorControllerTest do
  use OutlookWeb.ConnCase

  # TODO: make this work

  import Outlook.PublicFixtures

  @create_attrs %{description: "some description", homepage_name: "some homepage_name", homepage_url: "some homepage_url", name: "some name"}
  @update_attrs %{description: "some updated description", homepage_name: "some updated homepage_name", homepage_url: "some updated homepage_url", name: "some updated name"}
  @invalid_attrs %{description: nil, homepage_name: nil, homepage_url: nil, name: nil}

  describe "index" do
    test "lists all autoren", %{conn: conn} do
      conn = get(conn, ~p"/autoren")
      assert html_response(conn, 200) =~ "Listing Autoren"
    end
  end

  describe "new autor" do
    test "renders form", %{conn: conn} do
      conn = get(conn, ~p"/autoren/new")
      assert html_response(conn, 200) =~ "New Autor"
    end
  end

  describe "create autor" do
    test "redirects to show when data is valid", %{conn: conn} do
      conn = post(conn, ~p"/autoren", autor: @create_attrs)

      assert %{id: id} = redirected_params(conn)
      assert redirected_to(conn) == ~p"/autoren/#{id}"

      conn = get(conn, ~p"/autoren/#{id}")
      assert html_response(conn, 200) =~ "Autor #{id}"
    end

    test "renders errors when data is invalid", %{conn: conn} do
      conn = post(conn, ~p"/autoren", autor: @invalid_attrs)
      assert html_response(conn, 200) =~ "New Autor"
    end
  end

  describe "edit autor" do
    setup [:create_autor]

    test "renders form for editing chosen autor", %{conn: conn, autor: autor} do
      conn = get(conn, ~p"/autoren/#{autor}/edit")
      assert html_response(conn, 200) =~ "Edit Autor"
    end
  end

  describe "update autor" do
    setup [:create_autor]

    test "redirects when data is valid", %{conn: conn, autor: autor} do
      conn = put(conn, ~p"/autoren/#{autor}", autor: @update_attrs)
      assert redirected_to(conn) == ~p"/autoren/#{autor}"

      conn = get(conn, ~p"/autoren/#{autor}")
      assert html_response(conn, 200) =~ "some updated description"
    end

    test "renders errors when data is invalid", %{conn: conn, autor: autor} do
      conn = put(conn, ~p"/autoren/#{autor}", autor: @invalid_attrs)
      assert html_response(conn, 200) =~ "Edit Autor"
    end
  end

  describe "delete autor" do
    setup [:create_autor]

    test "deletes chosen autor", %{conn: conn, autor: autor} do
      conn = delete(conn, ~p"/autoren/#{autor}")
      assert redirected_to(conn) == ~p"/autoren"

      assert_error_sent 404, fn ->
        get(conn, ~p"/autoren/#{autor}")
      end
    end
  end

  defp create_autor(_) do
    autor = autor_fixture()
    %{autor: autor}
  end
end
