Make online store templates searchable

This commit is contained in:
Claudio Ortolina
2026-03-16 11:56:39 +00:00
parent 654b172ddb
commit f1e3b22f91
6 changed files with 201 additions and 25 deletions
@@ -28,6 +28,49 @@ defmodule MusicLibrary.OnlineStoreTemplatesTest do
end
end
describe "list_templates/1" do
test "filters by name" do
online_store_template(%{name: "Amazon UK"})
online_store_template(%{name: "Bandcamp"})
results = OnlineStoreTemplates.list_templates(query: "Amazon")
assert length(results) == 1
assert hd(results).name == "Amazon UK"
end
test "filters by description" do
online_store_template(%{name: "Store A", description: "vinyl marketplace"})
online_store_template(%{name: "Store B", description: "digital downloads"})
results = OnlineStoreTemplates.list_templates(query: "vinyl")
assert length(results) == 1
assert hd(results).name == "Store A"
end
test "respects offset and limit" do
for i <- 1..3, do: online_store_template(%{name: "Store #{i}"})
results = OnlineStoreTemplates.list_templates(limit: 1)
assert length(results) == 1
end
end
describe "count_templates/1" do
test "counts all templates" do
online_store_template(%{name: "Amazon"})
online_store_template(%{name: "Bandcamp"})
assert OnlineStoreTemplates.count_templates() == 2
end
test "counts filtered templates" do
online_store_template(%{name: "Amazon UK"})
online_store_template(%{name: "Bandcamp"})
assert OnlineStoreTemplates.count_templates(query: "Amazon") == 1
end
end
describe "create_template/1" do
test "creates with valid attrs" do
assert {:ok, template} =
@@ -11,10 +11,28 @@ defmodule MusicLibraryWeb.OnlineStoreTemplateLive.IndexTest do
conn
|> visit(~p"/online-store-templates")
|> assert_has("h1", "Online Store Templates")
|> assert_has("p", "Amazon UK")
|> assert_has("p", "Bandcamp")
end
test "search filters templates", %{conn: conn} do
online_store_template(%{name: "Amazon UK"})
online_store_template(%{name: "Bandcamp"})
{:ok, view, _html} = live(conn, ~p"/online-store-templates")
assert has_element?(view, "p", "Amazon UK")
assert has_element?(view, "p", "Bandcamp")
view
|> form("form", query: "Amazon")
|> render_change()
assert_patch(view, ~p"/online-store-templates?page=1&page_size=50&query=Amazon")
assert has_element?(view, "p", "Amazon UK")
refute has_element?(view, "p", "Bandcamp")
end
end
describe "Create template" do