diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0da01509..bdcb0abc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
# v0.8.0
-- Add search to catalog, ammo, container and tag index
-- Tweak urls for catalog, ammo, containers and tags
+- Add search to catalog, ammo, container, tag and range index pages
+- Tweak urls for catalog, ammo, containers, tags and shot records
+- Fix bug with shot group chart not drawing lines between days correctly
# v0.7.2
- Code improvements
diff --git a/assets/js/shot_log_chart.js b/assets/js/shot_log_chart.js
index 14a3f991..bd40ff53 100644
--- a/assets/js/shot_log_chart.js
+++ b/assets/js/shot_log_chart.js
@@ -80,6 +80,27 @@ export default {
}
})
},
+ updateChart (el) {
+ const data = JSON.parse(el.dataset.chartData)
+
+ this.el.chart.data = {
+ datasets: [{
+ label: el.dataset.label,
+ data: data.map(({ date, count, label }) => ({
+ label,
+ x: date,
+ y: count
+ })),
+ backgroundColor: `${el.dataset.color}77`,
+ borderColor: el.dataset.color,
+ fill: true,
+ borderWidth: 3,
+ pointBorderWidth: 1
+ }]
+ }
+
+ this.el.chart.update()
+ },
mounted () { this.initalizeChart(this.el) },
- updated () { this.initalizeChart(this.el) }
+ updated () { this.updateChart(this.el) }
}
diff --git a/lib/cannery/activity_log.ex b/lib/cannery/activity_log.ex
index 272df314..3d9aa35e 100644
--- a/lib/cannery/activity_log.ex
+++ b/lib/cannery/activity_log.ex
@@ -15,10 +15,50 @@ defmodule Cannery.ActivityLog do
iex> list_shot_groups(%User{id: 123})
[%ShotGroup{}, ...]
+ iex> list_shot_groups("cool", %User{id: 123})
+ [%ShotGroup{notes: "My cool shot group"}, ...]
+
"""
@spec list_shot_groups(User.t()) :: [ShotGroup.t()]
- def list_shot_groups(%User{id: user_id}) do
- Repo.all(from(sg in ShotGroup, where: sg.user_id == ^user_id))
+ @spec list_shot_groups(search :: nil | String.t(), User.t()) :: [ShotGroup.t()]
+ def list_shot_groups(search \\ nil, user)
+
+ def list_shot_groups(search, %{id: user_id}) when search |> is_nil() or search == "",
+ do: Repo.all(from sg in ShotGroup, where: sg.user_id == ^user_id)
+
+ def list_shot_groups(search, %{id: user_id}) when search |> is_binary() do
+ trimmed_search = String.trim(search)
+
+ Repo.all(
+ from sg in ShotGroup,
+ left_join: ag in assoc(sg, :ammo_group),
+ left_join: at in assoc(ag, :ammo_type),
+ where: sg.user_id == ^user_id,
+ where:
+ fragment(
+ "? @@ websearch_to_tsquery('english', ?)",
+ sg.search,
+ ^trimmed_search
+ ) or
+ fragment(
+ "? @@ websearch_to_tsquery('english', ?)",
+ ag.search,
+ ^trimmed_search
+ ) or
+ fragment(
+ "? @@ websearch_to_tsquery('english', ?)",
+ at.search,
+ ^trimmed_search
+ ),
+ order_by: {
+ :desc,
+ fragment(
+ "ts_rank_cd(?, websearch_to_tsquery('english', ?), 4)",
+ sg.search,
+ ^trimmed_search
+ )
+ }
+ )
end
@doc """
diff --git a/lib/cannery_web/live/range_live/index.ex b/lib/cannery_web/live/range_live/index.ex
index c6dbd611..58662dfb 100644
--- a/lib/cannery_web/live/range_live/index.ex
+++ b/lib/cannery_web/live/range_live/index.ex
@@ -10,7 +10,13 @@ defmodule CanneryWeb.RangeLive.Index do
alias Phoenix.LiveView.Socket
@impl true
- def mount(_params, _session, socket), do: {:ok, socket |> display_shot_groups()}
+ def mount(%{"search" => search}, _session, socket) do
+ {:ok, socket |> assign(search: search) |> display_shot_groups()}
+ end
+
+ def mount(_params, _session, socket) do
+ {:ok, socket |> assign(search: nil) |> display_shot_groups()}
+ end
@impl true
def handle_params(params, _url, %{assigns: %{live_action: live_action}} = socket) do
@@ -23,26 +29,46 @@ defmodule CanneryWeb.RangeLive.Index do
%{"id" => id}
) do
socket
- |> assign(:page_title, gettext("Record Shots"))
- |> assign(:ammo_group, Ammo.get_ammo_group!(id, current_user))
+ |> assign(
+ page_title: gettext("Record Shots"),
+ ammo_group: Ammo.get_ammo_group!(id, current_user)
+ )
end
defp apply_action(%{assigns: %{current_user: current_user}} = socket, :edit, %{"id" => id}) do
socket
- |> assign(:page_title, gettext("Edit Shot Records"))
- |> assign(:shot_group, ActivityLog.get_shot_group!(id, current_user))
+ |> assign(
+ page_title: gettext("Edit Shot Records"),
+ shot_group: ActivityLog.get_shot_group!(id, current_user)
+ )
end
defp apply_action(socket, :new, _params) do
socket
- |> assign(:page_title, gettext("New Shot Records"))
- |> assign(:shot_group, %ShotGroup{})
+ |> assign(
+ page_title: gettext("New Shot Records"),
+ shot_group: %ShotGroup{}
+ )
end
defp apply_action(socket, :index, _params) do
socket
- |> assign(:page_title, gettext("Shot Records"))
- |> assign(:shot_group, nil)
+ |> assign(
+ page_title: gettext("Shot Records"),
+ search: nil,
+ shot_group: nil
+ )
+ |> display_shot_groups()
+ end
+
+ defp apply_action(socket, :search, %{"search" => search}) do
+ socket
+ |> assign(
+ page_title: gettext("Shot Records"),
+ search: search,
+ shot_group: nil
+ )
+ |> display_shot_groups()
end
@impl true
@@ -55,6 +81,7 @@ defmodule CanneryWeb.RangeLive.Index do
{:noreply, socket |> put_flash(:info, prompt) |> display_shot_groups()}
end
+ @impl true
def handle_event(
"toggle_staged",
%{"ammo_group_id" => ammo_group_id},
@@ -69,10 +96,20 @@ defmodule CanneryWeb.RangeLive.Index do
{:noreply, socket |> put_flash(:info, prompt) |> display_shot_groups()}
end
+ @impl true
+ def handle_event("search", %{"search" => %{"search_term" => ""}}, socket) do
+ {:noreply, socket |> push_patch(to: Routes.range_index_path(Endpoint, :index))}
+ end
+
+ def handle_event("search", %{"search" => %{"search_term" => search_term}}, socket) do
+ {:noreply, socket |> push_patch(to: Routes.range_index_path(Endpoint, :search, search_term))}
+ end
+
@spec display_shot_groups(Socket.t()) :: Socket.t()
- defp display_shot_groups(%{assigns: %{current_user: current_user}} = socket) do
+ defp display_shot_groups(%{assigns: %{search: search, current_user: current_user}} = socket) do
shot_groups =
- ActivityLog.list_shot_groups(current_user) |> Repo.preload(ammo_group: :ammo_type)
+ ActivityLog.list_shot_groups(search, current_user)
+ |> Repo.preload(ammo_group: :ammo_type)
ammo_groups = Ammo.list_staged_ammo_groups(current_user)
@@ -114,7 +151,7 @@ defmodule CanneryWeb.RangeLive.Index do
label: gettext("Rounds shot: %{count}", count: sum)
}
end)
- |> Enum.sort_by(fn %{date: date} -> date end)
+ |> Enum.sort_by(fn %{date: date} -> date end, Date)
end
@spec get_row_data_for_shot_group(ShotGroup.t(), [map()]) :: map()
diff --git a/lib/cannery_web/live/range_live/index.html.heex b/lib/cannery_web/live/range_live/index.html.heex
index 718a2dec..166838f0 100644
--- a/lib/cannery_web/live/range_live/index.html.heex
+++ b/lib/cannery_web/live/range_live/index.html.heex
@@ -43,7 +43,7 @@
- <%= if @shot_groups |> Enum.empty?() do %>
+ <%= if @shot_groups |> Enum.empty?() and @search |> is_nil() do %>
<%= gettext("No shots recorded") %>
<%= display_emoji("😔") %>
@@ -67,14 +67,39 @@
<%= dgettext("errors", "Your browser does not support the canvas element.") %>
- <.live_component
- module={CanneryWeb.Components.TableComponent}
- id="shot_groups_index_table"
- columns={@columns}
- rows={@rows}
- initial_key={:date}
- initial_sort_mode={:desc}
- />
+
+ <.form
+ :let={f}
+ for={:search}
+ phx-change="search"
+ phx-submit="search"
+ class="grow self-stretch flex flex-col items-stretch"
+ data-qa="shot_group_search"
+ >
+ <%= text_input(f, :search_term,
+ class: "input input-primary",
+ value: @search,
+ phx_debounce: 300,
+ placeholder: gettext("Search shot records")
+ ) %>
+
+
+
+ <%= if @shot_groups |> Enum.empty?() do %>
+
+ <%= gettext("No shots recorded") %>
+ <%= display_emoji("😔") %>
+
+ <% else %>
+ <.live_component
+ module={CanneryWeb.Components.TableComponent}
+ id="shot_groups_index_table"
+ columns={@columns}
+ rows={@rows}
+ initial_key={:date}
+ initial_sort_mode={:desc}
+ />
+ <% end %>
<% end %>
diff --git a/lib/cannery_web/router.ex b/lib/cannery_web/router.ex
index b78ae4d6..2c1c9e5f 100644
--- a/lib/cannery_web/router.ex
+++ b/lib/cannery_web/router.ex
@@ -103,8 +103,9 @@ defmodule CanneryWeb.Router do
live "/ammo/show/:id/edit/:shot_group_id", AmmoGroupLive.Show, :edit_shot_group
live "/range", RangeLive.Index, :index
- live "/range/:id/edit", RangeLive.Index, :edit
- live "/range/:id/add_shot_group", RangeLive.Index, :add_shot_group
+ live "/range/edit/:id", RangeLive.Index, :edit
+ live "/range/add_shot_group/:id", RangeLive.Index, :add_shot_group
+ live "/range/search/:search", RangeLive.Index, :search
end
scope "/", CanneryWeb do
diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po
index ca40aed4..f4813670 100644
--- a/priv/gettext/de/LC_MESSAGES/default.po
+++ b/priv/gettext/de/LC_MESSAGES/default.po
@@ -49,7 +49,7 @@ msgstr "Admins:"
#: lib/cannery_web/live/ammo_group_live/index.ex:70
#: lib/cannery_web/live/ammo_group_live/index.ex:79
#: lib/cannery_web/live/ammo_group_live/index.html.heex:3
-#: lib/cannery_web/live/range_live/index.ex:80
+#: lib/cannery_web/live/range_live/index.ex:117
#, elixir-autogen, elixir-format
msgid "Ammo"
msgstr "Munition"
@@ -316,7 +316,7 @@ msgstr "Keine Tags"
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49
#: lib/cannery_web/live/ammo_group_live/show.ex:93
#: lib/cannery_web/live/range_live/form_component.html.heex:29
-#: lib/cannery_web/live/range_live/index.ex:82
+#: lib/cannery_web/live/range_live/index.ex:119
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr "Bemerkungen"
@@ -480,7 +480,7 @@ msgstr "Range Day"
#: lib/cannery_web/components/add_shot_group_component.html.heex:45
#: lib/cannery_web/live/ammo_group_live/show.ex:94
#: lib/cannery_web/live/range_live/form_component.html.heex:36
-#: lib/cannery_web/live/range_live/index.ex:83
+#: lib/cannery_web/live/range_live/index.ex:120
#, elixir-autogen, elixir-format
msgid "Date"
msgstr "Datum"
@@ -502,17 +502,18 @@ msgid "Record shots"
msgstr "Schüsse dokumentieren"
#: lib/cannery_web/live/ammo_group_live/show.ex:42
-#: lib/cannery_web/live/range_live/index.ex:32
+#: lib/cannery_web/live/range_live/index.ex:41
#, elixir-autogen, elixir-format
msgid "Edit Shot Records"
msgstr "Schießkladde editieren"
-#: lib/cannery_web/live/range_live/index.ex:38
+#: lib/cannery_web/live/range_live/index.ex:49
#, elixir-autogen, elixir-format
msgid "New Shot Records"
msgstr "Neue Schießkladde"
#: lib/cannery_web/live/range_live/index.html.heex:48
+#: lib/cannery_web/live/range_live/index.html.heex:90
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr "Keine Schüsse dokumentiert"
@@ -524,13 +525,14 @@ msgid "Rounds left"
msgstr "Patronen verbleibend"
#: lib/cannery_web/live/ammo_group_live/show.ex:92
-#: lib/cannery_web/live/range_live/index.ex:81
+#: lib/cannery_web/live/range_live/index.ex:118
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr "Patronen abgefeuert"
-#: lib/cannery_web/live/range_live/index.ex:44
+#: lib/cannery_web/live/range_live/index.ex:57
+#: lib/cannery_web/live/range_live/index.ex:67
#, elixir-autogen, elixir-format
msgid "Shot Records"
msgstr "Schießkladde"
@@ -722,7 +724,7 @@ msgid "Reset your password"
msgstr "Passwort zurücksetzen"
#: lib/cannery_web/live/ammo_group_live/show.ex:41
-#: lib/cannery_web/live/range_live/index.ex:26
+#: lib/cannery_web/live/range_live/index.ex:33
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr "Schüsse dokumentieren"
@@ -860,7 +862,7 @@ msgstr ""
msgid "%{percentage}%"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:114
+#: lib/cannery_web/live/range_live/index.ex:151
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Patronen abgefeuert"
@@ -1139,3 +1141,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Search tags"
msgstr ""
+
+#: lib/cannery_web/live/range_live/index.html.heex:83
+#, elixir-autogen, elixir-format
+msgid "Search shot records"
+msgstr ""
diff --git a/priv/gettext/de/LC_MESSAGES/prompts.po b/priv/gettext/de/LC_MESSAGES/prompts.po
index 9314fa5a..8261e382 100644
--- a/priv/gettext/de/LC_MESSAGES/prompts.po
+++ b/priv/gettext/de/LC_MESSAGES/prompts.po
@@ -209,13 +209,13 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?"
#: lib/cannery_web/live/ammo_group_live/show.ex:137
-#: lib/cannery_web/live/range_live/index.ex:159
+#: lib/cannery_web/live/range_live/index.ex:196
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?"
#: lib/cannery_web/live/ammo_group_live/show.ex:83
-#: lib/cannery_web/live/range_live/index.ex:54
+#: lib/cannery_web/live/range_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr "Schießkladde erfolgreich gelöscht"
@@ -272,7 +272,7 @@ msgstr "Spracheinstellung gespeichert."
msgid "Ammo deleted succesfully"
msgstr "Munitionsgruppe erfolgreich gelöscht"
-#: lib/cannery_web/live/range_live/index.ex:68
+#: lib/cannery_web/live/range_live/index.ex:95
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo unstaged succesfully"
msgstr "Munition erfolgreich demarkiert"
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index f2658d46..0bf0965e 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -34,7 +34,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:70
#: lib/cannery_web/live/ammo_group_live/index.ex:79
#: lib/cannery_web/live/ammo_group_live/index.html.heex:3
-#: lib/cannery_web/live/range_live/index.ex:80
+#: lib/cannery_web/live/range_live/index.ex:117
#, elixir-autogen, elixir-format
msgid "Ammo"
msgstr ""
@@ -301,7 +301,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49
#: lib/cannery_web/live/ammo_group_live/show.ex:93
#: lib/cannery_web/live/range_live/form_component.html.heex:29
-#: lib/cannery_web/live/range_live/index.ex:82
+#: lib/cannery_web/live/range_live/index.ex:119
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr ""
@@ -463,7 +463,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:45
#: lib/cannery_web/live/ammo_group_live/show.ex:94
#: lib/cannery_web/live/range_live/form_component.html.heex:36
-#: lib/cannery_web/live/range_live/index.ex:83
+#: lib/cannery_web/live/range_live/index.ex:120
#, elixir-autogen, elixir-format
msgid "Date"
msgstr ""
@@ -485,17 +485,18 @@ msgid "Record shots"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:42
-#: lib/cannery_web/live/range_live/index.ex:32
+#: lib/cannery_web/live/range_live/index.ex:41
#, elixir-autogen, elixir-format
msgid "Edit Shot Records"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:38
+#: lib/cannery_web/live/range_live/index.ex:49
#, elixir-autogen, elixir-format
msgid "New Shot Records"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:48
+#: lib/cannery_web/live/range_live/index.html.heex:90
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr ""
@@ -507,13 +508,14 @@ msgid "Rounds left"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:92
-#: lib/cannery_web/live/range_live/index.ex:81
+#: lib/cannery_web/live/range_live/index.ex:118
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:44
+#: lib/cannery_web/live/range_live/index.ex:57
+#: lib/cannery_web/live/range_live/index.ex:67
#, elixir-autogen, elixir-format
msgid "Shot Records"
msgstr ""
@@ -705,7 +707,7 @@ msgid "Reset your password"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:41
-#: lib/cannery_web/live/range_live/index.ex:26
+#: lib/cannery_web/live/range_live/index.ex:33
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr ""
@@ -843,7 +845,7 @@ msgstr ""
msgid "%{percentage}%"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:114
+#: lib/cannery_web/live/range_live/index.ex:151
#, elixir-autogen, elixir-format
msgid "Rounds shot: %{count}"
msgstr ""
@@ -1122,3 +1124,8 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Search tags"
msgstr ""
+
+#: lib/cannery_web/live/range_live/index.html.heex:83
+#, elixir-autogen, elixir-format
+msgid "Search shot records"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index ed289104..5a7d017d 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -35,7 +35,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:70
#: lib/cannery_web/live/ammo_group_live/index.ex:79
#: lib/cannery_web/live/ammo_group_live/index.html.heex:3
-#: lib/cannery_web/live/range_live/index.ex:80
+#: lib/cannery_web/live/range_live/index.ex:117
#, elixir-autogen, elixir-format
msgid "Ammo"
msgstr ""
@@ -302,7 +302,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49
#: lib/cannery_web/live/ammo_group_live/show.ex:93
#: lib/cannery_web/live/range_live/form_component.html.heex:29
-#: lib/cannery_web/live/range_live/index.ex:82
+#: lib/cannery_web/live/range_live/index.ex:119
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr ""
@@ -464,7 +464,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:45
#: lib/cannery_web/live/ammo_group_live/show.ex:94
#: lib/cannery_web/live/range_live/form_component.html.heex:36
-#: lib/cannery_web/live/range_live/index.ex:83
+#: lib/cannery_web/live/range_live/index.ex:120
#, elixir-autogen, elixir-format
msgid "Date"
msgstr ""
@@ -486,17 +486,18 @@ msgid "Record shots"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:42
-#: lib/cannery_web/live/range_live/index.ex:32
+#: lib/cannery_web/live/range_live/index.ex:41
#, elixir-autogen, elixir-format
msgid "Edit Shot Records"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:38
+#: lib/cannery_web/live/range_live/index.ex:49
#, elixir-autogen, elixir-format
msgid "New Shot Records"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:48
+#: lib/cannery_web/live/range_live/index.html.heex:90
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr ""
@@ -508,13 +509,14 @@ msgid "Rounds left"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:92
-#: lib/cannery_web/live/range_live/index.ex:81
+#: lib/cannery_web/live/range_live/index.ex:118
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:44
+#: lib/cannery_web/live/range_live/index.ex:57
+#: lib/cannery_web/live/range_live/index.ex:67
#, elixir-autogen, elixir-format
msgid "Shot Records"
msgstr ""
@@ -706,7 +708,7 @@ msgid "Reset your password"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:41
-#: lib/cannery_web/live/range_live/index.ex:26
+#: lib/cannery_web/live/range_live/index.ex:33
#, elixir-autogen, elixir-format, fuzzy
msgid "Record Shots"
msgstr ""
@@ -844,7 +846,7 @@ msgstr ""
msgid "%{percentage}%"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:114
+#: lib/cannery_web/live/range_live/index.ex:151
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""
@@ -1123,3 +1125,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Search tags"
msgstr ""
+
+#: lib/cannery_web/live/range_live/index.html.heex:83
+#, elixir-autogen, elixir-format
+msgid "Search shot records"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/prompts.po b/priv/gettext/en/LC_MESSAGES/prompts.po
index 8c53e523..7b8dff56 100644
--- a/priv/gettext/en/LC_MESSAGES/prompts.po
+++ b/priv/gettext/en/LC_MESSAGES/prompts.po
@@ -189,13 +189,13 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:137
-#: lib/cannery_web/live/range_live/index.ex:159
+#: lib/cannery_web/live/range_live/index.ex:196
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:83
-#: lib/cannery_web/live/range_live/index.ex:54
+#: lib/cannery_web/live/range_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr ""
@@ -252,7 +252,7 @@ msgstr ""
msgid "Ammo deleted succesfully"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:68
+#: lib/cannery_web/live/range_live/index.ex:95
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo unstaged succesfully"
msgstr ""
diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po
index b06d7c60..d78464ab 100644
--- a/priv/gettext/es/LC_MESSAGES/default.po
+++ b/priv/gettext/es/LC_MESSAGES/default.po
@@ -49,7 +49,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:70
#: lib/cannery_web/live/ammo_group_live/index.ex:79
#: lib/cannery_web/live/ammo_group_live/index.html.heex:3
-#: lib/cannery_web/live/range_live/index.ex:80
+#: lib/cannery_web/live/range_live/index.ex:117
#, elixir-autogen, elixir-format
msgid "Ammo"
msgstr ""
@@ -316,7 +316,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49
#: lib/cannery_web/live/ammo_group_live/show.ex:93
#: lib/cannery_web/live/range_live/form_component.html.heex:29
-#: lib/cannery_web/live/range_live/index.ex:82
+#: lib/cannery_web/live/range_live/index.ex:119
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr ""
@@ -478,7 +478,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:45
#: lib/cannery_web/live/ammo_group_live/show.ex:94
#: lib/cannery_web/live/range_live/form_component.html.heex:36
-#: lib/cannery_web/live/range_live/index.ex:83
+#: lib/cannery_web/live/range_live/index.ex:120
#, elixir-autogen, elixir-format
msgid "Date"
msgstr ""
@@ -500,17 +500,18 @@ msgid "Record shots"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:42
-#: lib/cannery_web/live/range_live/index.ex:32
+#: lib/cannery_web/live/range_live/index.ex:41
#, elixir-autogen, elixir-format
msgid "Edit Shot Records"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:38
+#: lib/cannery_web/live/range_live/index.ex:49
#, elixir-autogen, elixir-format
msgid "New Shot Records"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:48
+#: lib/cannery_web/live/range_live/index.html.heex:90
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr ""
@@ -522,13 +523,14 @@ msgid "Rounds left"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:92
-#: lib/cannery_web/live/range_live/index.ex:81
+#: lib/cannery_web/live/range_live/index.ex:118
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:44
+#: lib/cannery_web/live/range_live/index.ex:57
+#: lib/cannery_web/live/range_live/index.ex:67
#, elixir-autogen, elixir-format
msgid "Shot Records"
msgstr ""
@@ -720,7 +722,7 @@ msgid "Reset your password"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:41
-#: lib/cannery_web/live/range_live/index.ex:26
+#: lib/cannery_web/live/range_live/index.ex:33
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr ""
@@ -858,7 +860,7 @@ msgstr ""
msgid "%{percentage}%"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:114
+#: lib/cannery_web/live/range_live/index.ex:151
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""
@@ -1137,3 +1139,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Search tags"
msgstr ""
+
+#: lib/cannery_web/live/range_live/index.html.heex:83
+#, elixir-autogen, elixir-format
+msgid "Search shot records"
+msgstr ""
diff --git a/priv/gettext/es/LC_MESSAGES/prompts.po b/priv/gettext/es/LC_MESSAGES/prompts.po
index eac6ab16..9f47ab46 100644
--- a/priv/gettext/es/LC_MESSAGES/prompts.po
+++ b/priv/gettext/es/LC_MESSAGES/prompts.po
@@ -208,13 +208,13 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Está seguro que desea desmontar esta munición?"
#: lib/cannery_web/live/ammo_group_live/show.ex:137
-#: lib/cannery_web/live/range_live/index.ex:159
+#: lib/cannery_web/live/range_live/index.ex:196
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:83
-#: lib/cannery_web/live/range_live/index.ex:54
+#: lib/cannery_web/live/range_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr ""
@@ -271,7 +271,7 @@ msgstr ""
msgid "Ammo deleted succesfully"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:68
+#: lib/cannery_web/live/range_live/index.ex:95
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo unstaged succesfully"
msgstr ""
diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po
index 874e1e60..8e9a1297 100644
--- a/priv/gettext/fr/LC_MESSAGES/default.po
+++ b/priv/gettext/fr/LC_MESSAGES/default.po
@@ -49,7 +49,7 @@ msgstr "Administrateur·ices :"
#: lib/cannery_web/live/ammo_group_live/index.ex:70
#: lib/cannery_web/live/ammo_group_live/index.ex:79
#: lib/cannery_web/live/ammo_group_live/index.html.heex:3
-#: lib/cannery_web/live/range_live/index.ex:80
+#: lib/cannery_web/live/range_live/index.ex:117
#, elixir-autogen, elixir-format
msgid "Ammo"
msgstr "Munition"
@@ -316,7 +316,7 @@ msgstr "Aucun tag"
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49
#: lib/cannery_web/live/ammo_group_live/show.ex:93
#: lib/cannery_web/live/range_live/form_component.html.heex:29
-#: lib/cannery_web/live/range_live/index.ex:82
+#: lib/cannery_web/live/range_live/index.ex:119
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr "Notes"
@@ -482,7 +482,7 @@ msgstr "Journée de stand"
#: lib/cannery_web/components/add_shot_group_component.html.heex:45
#: lib/cannery_web/live/ammo_group_live/show.ex:94
#: lib/cannery_web/live/range_live/form_component.html.heex:36
-#: lib/cannery_web/live/range_live/index.ex:83
+#: lib/cannery_web/live/range_live/index.ex:120
#, elixir-autogen, elixir-format
msgid "Date"
msgstr "Date"
@@ -504,17 +504,18 @@ msgid "Record shots"
msgstr "Tirs enregistrés"
#: lib/cannery_web/live/ammo_group_live/show.ex:42
-#: lib/cannery_web/live/range_live/index.ex:32
+#: lib/cannery_web/live/range_live/index.ex:41
#, elixir-autogen, elixir-format
msgid "Edit Shot Records"
msgstr "Modifier les enregistrements de tir"
-#: lib/cannery_web/live/range_live/index.ex:38
+#: lib/cannery_web/live/range_live/index.ex:49
#, elixir-autogen, elixir-format
msgid "New Shot Records"
msgstr "Nouveaux enregistrements de tir"
#: lib/cannery_web/live/range_live/index.html.heex:48
+#: lib/cannery_web/live/range_live/index.html.heex:90
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr "Aucun tir enregistré"
@@ -526,13 +527,14 @@ msgid "Rounds left"
msgstr "Cartouches restantes"
#: lib/cannery_web/live/ammo_group_live/show.ex:92
-#: lib/cannery_web/live/range_live/index.ex:81
+#: lib/cannery_web/live/range_live/index.ex:118
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr "Cartouches tirées"
-#: lib/cannery_web/live/range_live/index.ex:44
+#: lib/cannery_web/live/range_live/index.ex:57
+#: lib/cannery_web/live/range_live/index.ex:67
#, elixir-autogen, elixir-format
msgid "Shot Records"
msgstr "Enregistrements de tir"
@@ -724,7 +726,7 @@ msgid "Reset your password"
msgstr "Réinitialiser votre mot de passe"
#: lib/cannery_web/live/ammo_group_live/show.ex:41
-#: lib/cannery_web/live/range_live/index.ex:26
+#: lib/cannery_web/live/range_live/index.ex:33
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr "Enregistrer des tirs"
@@ -863,7 +865,7 @@ msgstr ""
msgid "%{percentage}%"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:114
+#: lib/cannery_web/live/range_live/index.ex:151
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Cartouches tirées"
@@ -1142,3 +1144,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Search tags"
msgstr ""
+
+#: lib/cannery_web/live/range_live/index.html.heex:83
+#, elixir-autogen, elixir-format
+msgid "Search shot records"
+msgstr ""
diff --git a/priv/gettext/fr/LC_MESSAGES/prompts.po b/priv/gettext/fr/LC_MESSAGES/prompts.po
index ae939b5d..50380816 100644
--- a/priv/gettext/fr/LC_MESSAGES/prompts.po
+++ b/priv/gettext/fr/LC_MESSAGES/prompts.po
@@ -210,13 +210,13 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition ?"
#: lib/cannery_web/live/ammo_group_live/show.ex:137
-#: lib/cannery_web/live/range_live/index.ex:159
+#: lib/cannery_web/live/range_live/index.ex:196
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir ?"
#: lib/cannery_web/live/ammo_group_live/show.ex:83
-#: lib/cannery_web/live/range_live/index.ex:54
+#: lib/cannery_web/live/range_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr "Enregistrements de tir supprimés avec succès"
@@ -273,7 +273,7 @@ msgstr "Langue mise à jour avec succès."
msgid "Ammo deleted succesfully"
msgstr "Groupe de munition supprimé avec succès"
-#: lib/cannery_web/live/range_live/index.ex:68
+#: lib/cannery_web/live/range_live/index.ex:95
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo unstaged succesfully"
msgstr "Groupe de munition désélectionner avec succès"
diff --git a/priv/gettext/ga/LC_MESSAGES/default.po b/priv/gettext/ga/LC_MESSAGES/default.po
index 56d6eb6d..5ce5df1e 100644
--- a/priv/gettext/ga/LC_MESSAGES/default.po
+++ b/priv/gettext/ga/LC_MESSAGES/default.po
@@ -45,7 +45,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/index.ex:70
#: lib/cannery_web/live/ammo_group_live/index.ex:79
#: lib/cannery_web/live/ammo_group_live/index.html.heex:3
-#: lib/cannery_web/live/range_live/index.ex:80
+#: lib/cannery_web/live/range_live/index.ex:117
#, elixir-autogen, elixir-format
msgid "Ammo"
msgstr ""
@@ -312,7 +312,7 @@ msgstr ""
#: lib/cannery_web/live/ammo_group_live/form_component.html.heex:49
#: lib/cannery_web/live/ammo_group_live/show.ex:93
#: lib/cannery_web/live/range_live/form_component.html.heex:29
-#: lib/cannery_web/live/range_live/index.ex:82
+#: lib/cannery_web/live/range_live/index.ex:119
#, elixir-autogen, elixir-format
msgid "Notes"
msgstr ""
@@ -474,7 +474,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_group_component.html.heex:45
#: lib/cannery_web/live/ammo_group_live/show.ex:94
#: lib/cannery_web/live/range_live/form_component.html.heex:36
-#: lib/cannery_web/live/range_live/index.ex:83
+#: lib/cannery_web/live/range_live/index.ex:120
#, elixir-autogen, elixir-format
msgid "Date"
msgstr ""
@@ -496,17 +496,18 @@ msgid "Record shots"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:42
-#: lib/cannery_web/live/range_live/index.ex:32
+#: lib/cannery_web/live/range_live/index.ex:41
#, elixir-autogen, elixir-format
msgid "Edit Shot Records"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:38
+#: lib/cannery_web/live/range_live/index.ex:49
#, elixir-autogen, elixir-format
msgid "New Shot Records"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:48
+#: lib/cannery_web/live/range_live/index.html.heex:90
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr ""
@@ -518,13 +519,14 @@ msgid "Rounds left"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:92
-#: lib/cannery_web/live/range_live/index.ex:81
+#: lib/cannery_web/live/range_live/index.ex:118
#: lib/cannery_web/live/range_live/index.html.heex:62
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:44
+#: lib/cannery_web/live/range_live/index.ex:57
+#: lib/cannery_web/live/range_live/index.ex:67
#, elixir-autogen, elixir-format
msgid "Shot Records"
msgstr ""
@@ -716,7 +718,7 @@ msgid "Reset your password"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:41
-#: lib/cannery_web/live/range_live/index.ex:26
+#: lib/cannery_web/live/range_live/index.ex:33
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr ""
@@ -854,7 +856,7 @@ msgstr ""
msgid "%{percentage}%"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:114
+#: lib/cannery_web/live/range_live/index.ex:151
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""
@@ -1133,3 +1135,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Search tags"
msgstr ""
+
+#: lib/cannery_web/live/range_live/index.html.heex:83
+#, elixir-autogen, elixir-format
+msgid "Search shot records"
+msgstr ""
diff --git a/priv/gettext/ga/LC_MESSAGES/prompts.po b/priv/gettext/ga/LC_MESSAGES/prompts.po
index c1f4f122..d9e8fa0d 100644
--- a/priv/gettext/ga/LC_MESSAGES/prompts.po
+++ b/priv/gettext/ga/LC_MESSAGES/prompts.po
@@ -199,13 +199,13 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:137
-#: lib/cannery_web/live/range_live/index.ex:159
+#: lib/cannery_web/live/range_live/index.ex:196
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:83
-#: lib/cannery_web/live/range_live/index.ex:54
+#: lib/cannery_web/live/range_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr ""
@@ -262,7 +262,7 @@ msgstr ""
msgid "Ammo deleted succesfully"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:68
+#: lib/cannery_web/live/range_live/index.ex:95
#, elixir-autogen, elixir-format
msgid "Ammo unstaged succesfully"
msgstr ""
diff --git a/priv/gettext/prompts.pot b/priv/gettext/prompts.pot
index 87adeac3..327d92ff 100644
--- a/priv/gettext/prompts.pot
+++ b/priv/gettext/prompts.pot
@@ -188,13 +188,13 @@ msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:137
-#: lib/cannery_web/live/range_live/index.ex:159
+#: lib/cannery_web/live/range_live/index.ex:196
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""
#: lib/cannery_web/live/ammo_group_live/show.ex:83
-#: lib/cannery_web/live/range_live/index.ex:54
+#: lib/cannery_web/live/range_live/index.ex:80
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr ""
@@ -251,7 +251,7 @@ msgstr ""
msgid "Ammo deleted succesfully"
msgstr ""
-#: lib/cannery_web/live/range_live/index.ex:68
+#: lib/cannery_web/live/range_live/index.ex:95
#, elixir-autogen, elixir-format
msgid "Ammo unstaged succesfully"
msgstr ""
diff --git a/test/cannery/activity_log_test.exs b/test/cannery/activity_log_test.exs
index 418c8f59..c2791be1 100644
--- a/test/cannery/activity_log_test.exs
+++ b/test/cannery/activity_log_test.exs
@@ -38,17 +38,56 @@ defmodule Cannery.ActivityLogTest do
]
end
- test "list_shot_groups/0 returns all shot_groups",
+ test "list_shot_groups/1 returns all shot_groups",
%{shot_group: shot_group, current_user: current_user} do
assert ActivityLog.list_shot_groups(current_user) == [shot_group]
end
- test "get_shot_group!/1 returns the shot_group with given id",
+ test "list_shot_groups/2 returns relevant shot_groups for a user", %{
+ ammo_type: ammo_type,
+ ammo_group: ammo_group,
+ container: container,
+ current_user: current_user
+ } do
+ shot_group_a = shot_group_fixture(%{"notes" => "amazing"}, current_user, ammo_group)
+
+ {1, [another_ammo_group]} =
+ ammo_group_fixture(%{"notes" => "stupendous"}, ammo_type, container, current_user)
+
+ shot_group_b = shot_group_fixture(current_user, another_ammo_group)
+
+ another_ammo_type = ammo_type_fixture(%{"name" => "fabulous ammo"}, current_user)
+
+ {1, [yet_another_ammo_group]} =
+ ammo_group_fixture(another_ammo_type, container, current_user)
+
+ shot_group_c = shot_group_fixture(current_user, yet_another_ammo_group)
+
+ random_user = user_fixture()
+ random_container = container_fixture(random_user)
+ random_ammo_type = ammo_type_fixture(random_user)
+
+ {1, [random_ammo_group]} =
+ ammo_group_fixture(random_ammo_type, random_container, random_user)
+
+ _shouldnt_return = shot_group_fixture(random_user, random_ammo_group)
+
+ # notes
+ assert ActivityLog.list_shot_groups("amazing", current_user) == [shot_group_a]
+
+ # ammo group attributes
+ assert ActivityLog.list_shot_groups("stupendous", current_user) == [shot_group_b]
+
+ # ammo type attributes
+ assert ActivityLog.list_shot_groups("fabulous", current_user) == [shot_group_c]
+ end
+
+ test "get_shot_group!/2 returns the shot_group with given id",
%{shot_group: shot_group, current_user: current_user} do
assert ActivityLog.get_shot_group!(shot_group.id, current_user) == shot_group
end
- test "get_shot_group!/1 does not return a shot_group of another user",
+ test "get_shot_group!/2 does not return a shot_group of another user",
%{shot_group: shot_group} do
another_user = user_fixture()
@@ -57,7 +96,7 @@ defmodule Cannery.ActivityLogTest do
end
end
- test "create_shot_group/1 with valid data creates a shot_group",
+ test "create_shot_group/3 with valid data creates a shot_group",
%{current_user: current_user, ammo_group: ammo_group} do
valid_attrs = %{"count" => 10, "date" => ~D[2022-02-13], "notes" => "some notes"}
@@ -69,7 +108,7 @@ defmodule Cannery.ActivityLogTest do
assert shot_group.notes == "some notes"
end
- test "create_shot_group/1 removes corresponding count from ammo group",
+ test "create_shot_group/3 removes corresponding count from ammo group",
%{
current_user: current_user,
ammo_group: %{id: ammo_group_id, count: org_count} = ammo_group
@@ -85,7 +124,7 @@ defmodule Cannery.ActivityLogTest do
assert new_count == 10
end
- test "create_shot_group/1 does not remove more than ammo group amount",
+ test "create_shot_group/3 does not remove more than ammo group amount",
%{current_user: current_user, ammo_group: %{id: ammo_group_id} = ammo_group} do
valid_attrs = %{"count" => 20, "date" => ~D[2022-02-13], "notes" => "some notes"}
@@ -100,7 +139,7 @@ defmodule Cannery.ActivityLogTest do
ActivityLog.create_shot_group(%{"count" => 1}, current_user, ammo_group)
end
- test "create_shot_group/1 with invalid data returns error changeset",
+ test "create_shot_group/3 with invalid data returns error changeset",
%{current_user: current_user, ammo_group: ammo_group} do
invalid_params = %{"count" => nil, "date" => nil, "notes" => nil}
@@ -108,7 +147,7 @@ defmodule Cannery.ActivityLogTest do
ActivityLog.create_shot_group(invalid_params, current_user, ammo_group)
end
- test "update_shot_group/2 with valid data updates the shot_group and ammo_group",
+ test "update_shot_group/3 with valid data updates the shot_group and ammo_group",
%{
shot_group: shot_group,
ammo_group: %{id: ammo_group_id},
@@ -149,7 +188,7 @@ defmodule Cannery.ActivityLogTest do
assert ammo_group.count == 0
end
- test "update_shot_group/2 with invalid data returns error changeset",
+ test "update_shot_group/3 with invalid data returns error changeset",
%{shot_group: shot_group, current_user: current_user} do
assert {:error, %Ecto.Changeset{}} =
ActivityLog.update_shot_group(
@@ -168,7 +207,7 @@ defmodule Cannery.ActivityLogTest do
assert shot_group == ActivityLog.get_shot_group!(shot_group.id, current_user)
end
- test "delete_shot_group/1 deletes the shot_group and adds value back",
+ test "delete_shot_group/2 deletes the shot_group and adds value back",
%{shot_group: shot_group, current_user: current_user, ammo_group: %{id: ammo_group_id}} do
assert {:ok, %ShotGroup{}} = ActivityLog.delete_shot_group(shot_group, current_user)
diff --git a/test/cannery_web/live/range_live_test.exs b/test/cannery_web/live/range_live_test.exs
index 5f25f961..fd2ed6b8 100644
--- a/test/cannery_web/live/range_live_test.exs
+++ b/test/cannery_web/live/range_live_test.exs
@@ -37,6 +37,32 @@ defmodule CanneryWeb.RangeLiveTest do
assert html =~ shot_group.notes
end
+ test "can search for shot_group", %{conn: conn, shot_group: shot_group} do
+ {:ok, index_live, html} = live(conn, Routes.range_index_path(conn, :index))
+
+ assert html =~ shot_group.notes
+
+ assert index_live
+ |> form("[data-qa=\"shot_group_search\"]",
+ search: %{search_term: shot_group.notes}
+ )
+ |> render_change() =~ shot_group.notes
+
+ assert_patch(index_live, Routes.range_index_path(conn, :search, shot_group.notes))
+
+ refute index_live
+ |> form("[data-qa=\"shot_group_search\"]", search: %{search_term: "something_else"})
+ |> render_change() =~ shot_group.notes
+
+ assert_patch(index_live, Routes.range_index_path(conn, :search, "something_else"))
+
+ assert index_live
+ |> form("[data-qa=\"shot_group_search\"]", search: %{search_term: ""})
+ |> render_change() =~ shot_group.notes
+
+ assert_patch(index_live, Routes.range_index_path(conn, :index))
+ end
+
test "saves new shot_group", %{conn: conn, ammo_group: ammo_group} do
{:ok, index_live, _html} = live(conn, Routes.range_index_path(conn, :index))