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 | ||||
|   @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} | ||||
|   @update_attrs %{"count" => 43, "notes" => "some updated notes", "price_paid" => 456.7} | ||||
|   @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} | ||||
|  | ||||
|   defp create_ammo_group(%{current_user: current_user}) do | ||||
| @@ -21,14 +34,28 @@ defmodule CanneryWeb.AmmoGroupLiveTest do | ||||
|     container = container_fixture(current_user) | ||||
|     {1, [ammo_group]} = ammo_group_fixture(ammo_type, container, current_user) | ||||
|  | ||||
|     shot_group = | ||||
|       %{"count" => 5, "date" => ~N[2022-02-13 03:17:00], "notes" => "some notes"} | ||||
|       |> shot_group_fixture(current_user, ammo_group) | ||||
|     %{ammo_type: ammo_type, ammo_group: ammo_group, container: container} | ||||
|   end | ||||
|  | ||||
|   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} | ||||
|   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] | ||||
|  | ||||
|     test "lists all ammo_groups", %{conn: conn, ammo_group: ammo_group} do | ||||
| @@ -123,27 +150,6 @@ defmodule CanneryWeb.AmmoGroupLiveTest do | ||||
|                ) | ||||
|     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 | ||||
|       {: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}") | ||||
|     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 | ||||
|  | ||||
|   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] | ||||
|  | ||||
|     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") | ||||
|     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", | ||||
|          %{conn: conn, ammo_group: ammo_group, shot_group: shot_group} do | ||||
|   | ||||
		Reference in New Issue
	
	Block a user