Implement full-text search for members closes #11 #163

Merged
carla merged 6 commits from feature/11-fulltext-search into main 2025-09-29 14:26:38 +02:00
3 changed files with 3 additions and 5 deletions
Showing only changes of commit 2095d9b0da - Show all commits

View file

@ -8,7 +8,7 @@ defmodule MvWeb.Components.SearchBarComponent do
use MvWeb, :live_component
@impl true
def update(assigns, socket) do
def update(_assigns, socket) do
simon marked this conversation as resolved Outdated
mix test
Compiling 5 files (.ex)
    warning: variable "assigns" is unused (if the variable is not meant to be used, prefix it with an underscore)
    │
 11 │   def update(assigns, socket) do
    │              ~~~~~~~
    │
    └─ lib/mv_web/live/components/search_bar_component.ex:11:14: MvWeb.Components.SearchBarComponent.update/2
``` mix test Compiling 5 files (.ex) warning: variable "assigns" is unused (if the variable is not meant to be used, prefix it with an underscore) │ 11 │ def update(assigns, socket) do │ ~~~~~~~ │ └─ lib/mv_web/live/components/search_bar_component.ex:11:14: MvWeb.Components.SearchBarComponent.update/2 ```
socket =
socket
|> assign_new(:query, fn -> "" end)

View file

@ -14,15 +14,14 @@ defmodule MvWeb.Components.SearchBarComponentTest do
conn = conn_with_oidc_user(conn)
{:ok, view, _html} = live(conn, "/members")
# simulate search input and check that correct user is listed
# simulate search input and check that other members are not listed
html =
view
|> element("form[role=search]")
|> render_change(%{"query" => "Friedrich"})
assert html =~ "Friedrich"
refute html =~ "Greta"
simon marked this conversation as resolved Outdated

Doesn't this just assert that "Friedrich" should occur anywhere in the html?
If I'm not wrong, this would also apply to the exact same search string "Friedrich" which is rendered in html, too, and therefore it doesn't matter for the test which result is presented?

Doesn't this just assert that "Friedrich" should occur anywhere in the html? If I'm not wrong, this would also apply to the exact same search string "Friedrich" which is rendered in html, too, and therefore it doesn't matter for the test which result is presented?

Yes, you are right :) Changed that to checking if members are not present instead

Yes, you are right :) Changed that to checking if members are not present instead
# simulate search input and check that not matching user is not shown
html =
view
|> element("form[role=search]")

View file

@ -80,7 +80,6 @@ defmodule MvWeb.MemberLive.IndexTest do
send(view.pid, {:search_changed, "Friedrich"})
# State aus dem LiveView-Prozess holen
state = :sys.get_state(view.pid)
carla marked this conversation as resolved

a bit picky, but this comment should be in english :)

a bit picky, but this comment should be in english :)
assert state.socket.assigns.query == "Friedrich"