Make handover code entry visible and verifiable
Some checks are pending
Quality / full-local-gates (push) Waiting to run

This commit is contained in:
SimpleTest 2026-07-22 01:55:55 +03:00
parent 9938fd60cd
commit 66802bfa7a
2 changed files with 45 additions and 1 deletions

View File

@ -1020,15 +1020,31 @@ defmodule WhoNeedHelpWeb.RequestLive.Show do
Help.helper?(@current_scope, @assignment) && Help.helper?(@current_scope, @assignment) &&
is_nil(@assignment.handover_verified_at) is_nil(@assignment.handover_verified_at)
} }
id="handover-form"
for={@handover_form} for={@handover_form}
phx-submit="verify-code" phx-submit="verify-code"
> >
<.input <.input
field={@handover_form[:code]} field={@handover_form[:code]}
label={gettext("Enter handover code")} label={gettext("Enter handover code")}
type="text"
inputmode="numeric"
autocomplete="one-time-code"
minlength="6"
maxlength="6" maxlength="6"
pattern="[0-9]{6}"
placeholder="000000"
required
aria-describedby="handover-code-hint"
class="input w-full bg-base-100 text-center font-mono text-xl font-black tracking-[.22em] text-base-content caret-base-content placeholder:text-base-content/35"
/> />
<.button class="btn btn-primary mt-2 w-full"> <p id="handover-code-hint" class="mb-2 text-xs text-neutral-content/70">
{gettext("Enter the six digits shown to the requester.")}
</p>
<.button
class="btn btn-primary mt-2 w-full"
phx-disable-with={gettext("Verifying…")}
>
{gettext("Verify handover")} {gettext("Verify handover")}
</.button> </.button>
</.form> </.form>

View File

@ -646,6 +646,34 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do
assert_push_event(view, "reset-message-form", %{id: "request-report-form"}) assert_push_event(view, "reset-message-form", %{id: "request-report-form"})
end end
test "helper can enter and verify the visible six-digit handover code" do
category = Catalog.seed_defaults()
requester = user_fixture(display_name: "Handover requester")
helper = user_fixture(display_name: "Handover helper")
requester_scope = user_scope_fixture(requester)
helper_scope = user_scope_fixture(helper)
{:ok, request} = Help.create_request(requester_scope, request_attrs(category))
{:ok, assignment} = Help.accept_request(helper_scope, request.id)
{:ok, _assignment} = Help.start_assignment(helper_scope, assignment.id)
{:ok, view, _html} =
build_conn() |> log_in_user(helper) |> live(~p"/requests/#{request.id}")
assert has_element?(
view,
"#handover-form input[inputmode='numeric'][autocomplete='one-time-code'][pattern='[0-9]{6}']"
)
view
|> form("#handover-form", handover: %{code: Help.handover_code(request.id)})
|> render_submit()
assert render(view) =~ "Handover code verified."
refute has_element?(view, "#handover-form")
assert Help.get_request!(request.id).assignment.handover_verified_at
end
test "successful category proposal resets the browser form", %{conn: conn} do test "successful category proposal resets the browser form", %{conn: conn} do
Catalog.seed_defaults() Catalog.seed_defaults()
{:ok, view, _html} = live(conn, ~p"/categories/proposals") {:ok, view, _html} = live(conn, ~p"/categories/proposals")