ARIA: remove aria-sort from sort button; Password column tests
- Sort button: aria-sort removed (button role does not support it). - Index tests: remove aria-sort assertions; add Password column display tests.
This commit is contained in:
parent
c6082f2831
commit
541c79e501
2 changed files with 39 additions and 12 deletions
|
|
@ -20,7 +20,6 @@ defmodule MvWeb.TableComponents do
|
||||||
type="button"
|
type="button"
|
||||||
phx-click="sort"
|
phx-click="sort"
|
||||||
phx-value-field={@field}
|
phx-value-field={@field}
|
||||||
aria-sort={aria_sort(@sort_field, @sort_order, @field)}
|
|
||||||
class="flex items-center gap-1 hover:underline focus:outline-none"
|
class="flex items-center gap-1 hover:underline focus:outline-none"
|
||||||
>
|
>
|
||||||
<span>{@label}</span>
|
<span>{@label}</span>
|
||||||
|
|
@ -33,12 +32,4 @@ defmodule MvWeb.TableComponents do
|
||||||
</button>
|
</button>
|
||||||
"""
|
"""
|
||||||
end
|
end
|
||||||
|
|
||||||
defp aria_sort(current_field, current_order, this_field) do
|
|
||||||
cond do
|
|
||||||
current_field != this_field -> "none"
|
|
||||||
current_order == :asc -> "ascending"
|
|
||||||
true -> "descending"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,6 @@ defmodule MvWeb.UserLive.IndexTest do
|
||||||
|
|
||||||
# Should show ascending indicator (up arrow)
|
# Should show ascending indicator (up arrow)
|
||||||
assert html =~ "hero-chevron-up"
|
assert html =~ "hero-chevron-up"
|
||||||
assert html =~ ~s(aria-sort="ascending")
|
|
||||||
|
|
||||||
# Test actual sort order: alpha should appear before mike, mike before zulu
|
# Test actual sort order: alpha should appear before mike, mike before zulu
|
||||||
alpha_pos = html |> :binary.match("alpha@example.com") |> elem(0)
|
alpha_pos = html |> :binary.match("alpha@example.com") |> elem(0)
|
||||||
|
|
@ -76,7 +75,6 @@ defmodule MvWeb.UserLive.IndexTest do
|
||||||
|
|
||||||
# Should now show descending indicator (down arrow)
|
# Should now show descending indicator (down arrow)
|
||||||
assert html =~ "hero-chevron-down"
|
assert html =~ "hero-chevron-down"
|
||||||
assert html =~ ~s(aria-sort="descending")
|
|
||||||
|
|
||||||
# Test actual sort order reversed: zulu should now appear before mike, mike before alpha
|
# Test actual sort order reversed: zulu should now appear before mike, mike before alpha
|
||||||
alpha_pos = html |> :binary.match("alpha@example.com") |> elem(0)
|
alpha_pos = html |> :binary.match("alpha@example.com") |> elem(0)
|
||||||
|
|
@ -107,7 +105,6 @@ defmodule MvWeb.UserLive.IndexTest do
|
||||||
# Click again to toggle back to ascending
|
# Click again to toggle back to ascending
|
||||||
html = view |> element("button[phx-value-field='email']") |> render_click()
|
html = view |> element("button[phx-value-field='email']") |> render_click()
|
||||||
assert html =~ "hero-chevron-up"
|
assert html =~ "hero-chevron-up"
|
||||||
assert html =~ ~s(aria-sort="ascending")
|
|
||||||
|
|
||||||
# Should be back to original ascending order
|
# Should be back to original ascending order
|
||||||
alpha_pos = html |> :binary.match("alpha@example.com") |> elem(0)
|
alpha_pos = html |> :binary.match("alpha@example.com") |> elem(0)
|
||||||
|
|
@ -379,6 +376,45 @@ defmodule MvWeb.UserLive.IndexTest do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "Password column display" do
|
||||||
|
test "user without password shows em dash in Password column", %{conn: conn} do
|
||||||
|
# User created with hashed_password: nil (no password) - must not get default password
|
||||||
|
user_no_pw =
|
||||||
|
create_test_user(%{
|
||||||
|
email: "no-password@example.com",
|
||||||
|
hashed_password: nil
|
||||||
|
})
|
||||||
|
|
||||||
|
conn = conn_with_oidc_user(conn)
|
||||||
|
{:ok, view, html} = live(conn, "/users")
|
||||||
|
|
||||||
|
assert html =~ "no-password@example.com"
|
||||||
|
|
||||||
|
# Password column must show "—" (em dash) for user without password, not "Enabled"
|
||||||
|
row = view |> element("tr#row-#{user_no_pw.id}") |> render()
|
||||||
|
assert row =~ "—", "Password column should show em dash for user without password"
|
||||||
|
|
||||||
|
refute row =~ "Enabled",
|
||||||
|
"Password column must not show Enabled when user has no password"
|
||||||
|
end
|
||||||
|
|
||||||
|
test "user with password shows Enabled in Password column", %{conn: conn} do
|
||||||
|
user_with_pw =
|
||||||
|
create_test_user(%{
|
||||||
|
email: "with-password@example.com",
|
||||||
|
password: "test123"
|
||||||
|
})
|
||||||
|
|
||||||
|
conn = conn_with_oidc_user(conn)
|
||||||
|
{:ok, view, html} = live(conn, "/users")
|
||||||
|
|
||||||
|
assert html =~ "with-password@example.com"
|
||||||
|
|
||||||
|
row = view |> element("tr#row-#{user_with_pw.id}") |> render()
|
||||||
|
assert row =~ "Enabled", "Password column should show Enabled when user has password"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "member linking display" do
|
describe "member linking display" do
|
||||||
@tag :slow
|
@tag :slow
|
||||||
test "displays linked member name in user list", %{conn: conn} do
|
test "displays linked member name in user list", %{conn: conn} do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue