forked from shibao/cannery
		
	add test to ammo group live for empty ammo groups
This commit is contained in:
		@@ -10,10 +10,23 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @moduletag :ammo_group_live_test
 | 
					  @moduletag :ammo_group_live_test
 | 
				
			||||||
  @shot_group_create_attrs %{"ammo_left" => 5, "notes" => "some notes"}
 | 
					  @shot_group_create_attrs %{"ammo_left" => 5, "notes" => "some notes"}
 | 
				
			||||||
  @shot_group_update_attrs %{"count" => 5, "notes" => "some updated notes"}
 | 
					  @shot_group_update_attrs %{
 | 
				
			||||||
 | 
					    "count" => 5,
 | 
				
			||||||
 | 
					    "date" => ~N[2022-02-13 03:17:00],
 | 
				
			||||||
 | 
					    "notes" => "some updated notes"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  @create_attrs %{"count" => 42, "notes" => "some notes", "price_paid" => 120.5}
 | 
					  @create_attrs %{"count" => 42, "notes" => "some notes", "price_paid" => 120.5}
 | 
				
			||||||
  @update_attrs %{"count" => 43, "notes" => "some updated notes", "price_paid" => 456.7}
 | 
					  @update_attrs %{"count" => 43, "notes" => "some updated notes", "price_paid" => 456.7}
 | 
				
			||||||
  @ammo_group_create_limit 10_000
 | 
					  @ammo_group_create_limit 10_000
 | 
				
			||||||
 | 
					  @ammo_group_attrs %{
 | 
				
			||||||
 | 
					    "price_paid" => 50,
 | 
				
			||||||
 | 
					    "count" => 20
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  @shot_group_attrs %{
 | 
				
			||||||
 | 
					    "price_paid" => 50,
 | 
				
			||||||
 | 
					    "count" => 20
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # @invalid_attrs %{count: -1, notes: nil, price_paid: nil}
 | 
					  # @invalid_attrs %{count: -1, notes: nil, price_paid: nil}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  defp create_ammo_group(%{current_user: current_user}) do
 | 
					  defp create_ammo_group(%{current_user: current_user}) do
 | 
				
			||||||
@@ -21,14 +34,28 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
 | 
				
			|||||||
    container = container_fixture(current_user)
 | 
					    container = container_fixture(current_user)
 | 
				
			||||||
    {1, [ammo_group]} = ammo_group_fixture(ammo_type, container, current_user)
 | 
					    {1, [ammo_group]} = ammo_group_fixture(ammo_type, container, current_user)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shot_group =
 | 
					    %{ammo_type: ammo_type, ammo_group: ammo_group, container: container}
 | 
				
			||||||
      %{"count" => 5, "date" => ~N[2022-02-13 03:17:00], "notes" => "some notes"}
 | 
					  end
 | 
				
			||||||
      |> shot_group_fixture(current_user, ammo_group)
 | 
					
 | 
				
			||||||
 | 
					  defp create_shot_group(%{current_user: current_user, ammo_group: ammo_group}) do
 | 
				
			||||||
 | 
					    shot_group = shot_group_fixture(@shot_group_update_attrs, current_user, ammo_group)
 | 
				
			||||||
 | 
					    ammo_group = ammo_group |> Repo.reload!()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    %{ammo_group: ammo_group, shot_group: shot_group}
 | 
					    %{ammo_group: ammo_group, shot_group: shot_group}
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  describe "Index" do
 | 
					  defp create_empty_ammo_group(%{
 | 
				
			||||||
 | 
					         current_user: current_user,
 | 
				
			||||||
 | 
					         ammo_type: ammo_type,
 | 
				
			||||||
 | 
					         container: container
 | 
				
			||||||
 | 
					       }) do
 | 
				
			||||||
 | 
					    {1, [ammo_group]} = ammo_group_fixture(@ammo_group_attrs, ammo_type, container, current_user)
 | 
				
			||||||
 | 
					    shot_group = shot_group_fixture(@shot_group_attrs, current_user, ammo_group)
 | 
				
			||||||
 | 
					    ammo_group = ammo_group |> Repo.reload!()
 | 
				
			||||||
 | 
					    %{empty_ammo_group: ammo_group, shot_group: shot_group}
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe "Index of ammo group" do
 | 
				
			||||||
    setup [:register_and_log_in_user, :create_ammo_group]
 | 
					    setup [:register_and_log_in_user, :create_ammo_group]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    test "lists all ammo_groups", %{conn: conn, ammo_group: ammo_group} do
 | 
					    test "lists all ammo_groups", %{conn: conn, ammo_group: ammo_group} do
 | 
				
			||||||
@@ -123,27 +150,6 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
 | 
				
			|||||||
               )
 | 
					               )
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    test "saves new shot_group", %{conn: conn, ammo_group: ammo_group} do
 | 
					 | 
				
			||||||
      {:ok, index_live, _html} = live(conn, Routes.ammo_group_index_path(conn, :index))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      assert index_live |> element("a", dgettext("actions", "Record shots")) |> render_click() =~
 | 
					 | 
				
			||||||
               gettext("Record shots")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      assert_patch(index_live, Routes.ammo_group_index_path(conn, :add_shot_group, ammo_group))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # assert index_live
 | 
					 | 
				
			||||||
      #        |> form("#shot_group-form", shot_group: @invalid_attrs)
 | 
					 | 
				
			||||||
      #        |> render_change() =~ dgettext("errors", "is invalid")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      {:ok, _view, html} =
 | 
					 | 
				
			||||||
        index_live
 | 
					 | 
				
			||||||
        |> form("#shot-group-form", shot_group: @shot_group_create_attrs)
 | 
					 | 
				
			||||||
        |> render_submit()
 | 
					 | 
				
			||||||
        |> follow_redirect(conn, Routes.ammo_group_index_path(conn, :index))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      assert html =~ dgettext("prompts", "Shots recorded successfully")
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    test "updates ammo_group in listing", %{conn: conn, ammo_group: ammo_group} do
 | 
					    test "updates ammo_group in listing", %{conn: conn, ammo_group: ammo_group} do
 | 
				
			||||||
      {:ok, index_live, _html} = live(conn, Routes.ammo_group_index_path(conn, :index))
 | 
					      {:ok, index_live, _html} = live(conn, Routes.ammo_group_index_path(conn, :index))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -177,9 +183,59 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      refute has_element?(index_live, "#ammo_group-#{ammo_group.id}")
 | 
					      refute has_element?(index_live, "#ammo_group-#{ammo_group.id}")
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    test "saves new shot_group", %{conn: conn, ammo_group: ammo_group} do
 | 
				
			||||||
 | 
					      {:ok, index_live, _html} = live(conn, Routes.ammo_group_index_path(conn, :index))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      assert index_live |> element("a", dgettext("actions", "Record shots")) |> render_click() =~
 | 
				
			||||||
 | 
					               gettext("Record shots")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      assert_patch(index_live, Routes.ammo_group_index_path(conn, :add_shot_group, ammo_group))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # assert index_live
 | 
				
			||||||
 | 
					      #        |> form("#shot_group-form", shot_group: @invalid_attrs)
 | 
				
			||||||
 | 
					      #        |> render_change() =~ dgettext("errors", "is invalid")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      {:ok, _view, html} =
 | 
				
			||||||
 | 
					        index_live
 | 
				
			||||||
 | 
					        |> form("#shot-group-form", shot_group: @shot_group_create_attrs)
 | 
				
			||||||
 | 
					        |> render_submit()
 | 
				
			||||||
 | 
					        |> follow_redirect(conn, Routes.ammo_group_index_path(conn, :index))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      assert html =~ dgettext("prompts", "Shots recorded successfully")
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  describe "Show" do
 | 
					  describe "Index of empty ammo group" do
 | 
				
			||||||
 | 
					    setup [:register_and_log_in_user, :create_ammo_group, :create_empty_ammo_group]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    test "hides empty ammo groups by default", %{conn: conn, empty_ammo_group: ammo_group} do
 | 
				
			||||||
 | 
					      {:ok, show_live, html} = live(conn, Routes.ammo_group_index_path(conn, :index))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      assert html =~ gettext("Show used")
 | 
				
			||||||
 | 
					      refute html =~ gettext("$%{amount}", amount: 50.00 |> :erlang.float_to_binary(decimals: 2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      refute html =~
 | 
				
			||||||
 | 
					               "\n" <>
 | 
				
			||||||
 | 
					                 gettext("%{percentage}%",
 | 
				
			||||||
 | 
					                   percentage: ammo_group |> Ammo.get_percentage_remaining()
 | 
				
			||||||
 | 
					                 ) <>
 | 
				
			||||||
 | 
					                 "\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      html = show_live |> element("[data-qa=\"toggle_show_used\"]") |> render_click()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      assert html =~ gettext("$%{amount}", amount: 50.00 |> :erlang.float_to_binary(decimals: 2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      assert html =~
 | 
				
			||||||
 | 
					               "\n" <>
 | 
				
			||||||
 | 
					                 gettext("%{percentage}%",
 | 
				
			||||||
 | 
					                   percentage: ammo_group |> Ammo.get_percentage_remaining()
 | 
				
			||||||
 | 
					                 ) <>
 | 
				
			||||||
 | 
					                 "\n"
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe "Show ammo group" do
 | 
				
			||||||
    setup [:register_and_log_in_user, :create_ammo_group]
 | 
					    setup [:register_and_log_in_user, :create_ammo_group]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    test "displays ammo_group", %{conn: conn, ammo_group: ammo_group} do
 | 
					    test "displays ammo_group", %{conn: conn, ammo_group: ammo_group} do
 | 
				
			||||||
@@ -234,6 +290,10 @@ defmodule CanneryWeb.AmmoGroupLiveTest do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      assert html =~ dgettext("prompts", "Shots recorded successfully")
 | 
					      assert html =~ dgettext("prompts", "Shots recorded successfully")
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe "Show ammo group with shot group" do
 | 
				
			||||||
 | 
					    setup [:register_and_log_in_user, :create_ammo_group, :create_shot_group]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    test "updates shot_group in listing",
 | 
					    test "updates shot_group in listing",
 | 
				
			||||||
         %{conn: conn, ammo_group: ammo_group, shot_group: shot_group} do
 | 
					         %{conn: conn, ammo_group: ammo_group, shot_group: shot_group} do
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user