defmodule CanneryWeb.AmmoTypeLiveTest do use CanneryWeb.ConnCase import Phoenix.LiveViewTest alias Cannery.Ammo @create_attrs %{bullet_type: "some bullet_type", case_material: "some case_material", desc: "some desc", manufacturer: "some manufacturer", name: "some name", weight: 120.5} @update_attrs %{bullet_type: "some updated bullet_type", case_material: "some updated case_material", desc: "some updated desc", manufacturer: "some updated manufacturer", name: "some updated name", weight: 456.7} @invalid_attrs %{bullet_type: nil, case_material: nil, desc: nil, manufacturer: nil, name: nil, weight: nil} defp fixture(:ammo_type) do {:ok, ammo_type} = Ammo.create_ammo_type(@create_attrs) ammo_type end defp create_ammo_type(_) do ammo_type = fixture(:ammo_type) %{ammo_type: ammo_type} end describe "Index" do setup [:create_ammo_type] test "lists all ammo_types", %{conn: conn, ammo_type: ammo_type} do {:ok, _index_live, html} = live(conn, Routes.ammo_type_index_path(conn, :index)) assert html =~ "Listing Ammo types" assert html =~ ammo_type.bullet_type end test "saves new ammo_type", %{conn: conn} do {:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index)) assert index_live |> element("a", "New Ammo type") |> render_click() =~ "New Ammo type" assert_patch(index_live, Routes.ammo_type_index_path(conn, :new)) assert index_live |> form("#ammo_type-form", ammo_type: @invalid_attrs) |> render_change() =~ "can't be blank" {:ok, _, html} = index_live |> form("#ammo_type-form", ammo_type: @create_attrs) |> render_submit() |> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index)) assert html =~ "Ammo type created successfully" assert html =~ "some bullet_type" end test "updates ammo_type in listing", %{conn: conn, ammo_type: ammo_type} do {:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index)) assert index_live |> element("#ammo_type-#{ammo_type.id} a", "Edit") |> render_click() =~ "Edit Ammo type" assert_patch(index_live, Routes.ammo_type_index_path(conn, :edit, ammo_type)) assert index_live |> form("#ammo_type-form", ammo_type: @invalid_attrs) |> render_change() =~ "can't be blank" {:ok, _, html} = index_live |> form("#ammo_type-form", ammo_type: @update_attrs) |> render_submit() |> follow_redirect(conn, Routes.ammo_type_index_path(conn, :index)) assert html =~ "Ammo type updated successfully" assert html =~ "some updated bullet_type" end test "deletes ammo_type in listing", %{conn: conn, ammo_type: ammo_type} do {:ok, index_live, _html} = live(conn, Routes.ammo_type_index_path(conn, :index)) assert index_live |> element("#ammo_type-#{ammo_type.id} a", "Delete") |> render_click() refute has_element?(index_live, "#ammo_type-#{ammo_type.id}") end end describe "Show" do setup [:create_ammo_type] test "displays ammo_type", %{conn: conn, ammo_type: ammo_type} do {:ok, _show_live, html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) assert html =~ "Show Ammo type" assert html =~ ammo_type.bullet_type end test "updates ammo_type within modal", %{conn: conn, ammo_type: ammo_type} do {:ok, show_live, _html} = live(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) assert show_live |> element("a", "Edit") |> render_click() =~ "Edit Ammo type" assert_patch(show_live, Routes.ammo_type_show_path(conn, :edit, ammo_type)) assert show_live |> form("#ammo_type-form", ammo_type: @invalid_attrs) |> render_change() =~ "can't be blank" {:ok, _, html} = show_live |> form("#ammo_type-form", ammo_type: @update_attrs) |> render_submit() |> follow_redirect(conn, Routes.ammo_type_show_path(conn, :show, ammo_type)) assert html =~ "Ammo type updated successfully" assert html =~ "some updated bullet_type" end end end