Files
dexi/test/dexi_web/live/admin/users_live_test.exs
T

69 lines
2.1 KiB
Elixir

defmodule DexiWeb.Admin.UsersLiveTest do
use DexiWeb.ConnCase
import Dexi.AccountsFixtures
import Phoenix.LiveViewTest
alias Dexi.Accounts
test "an admin can edit an account from its card", %{conn: conn} do
admin_pubkey = unique_public_key()
user_pubkey = unique_public_key()
assert {:ok, admin} = Accounts.create_or_promote_admin(admin_pubkey)
assert {:ok, _user} = Accounts.get_or_create_user(user_pubkey)
conn = init_test_session(conn, %{user_pubkey: admin.pubkey})
{:ok, view, _html} = live(conn, ~p"/admin/users")
view
|> element("#edit-user-#{user_pubkey}")
|> render_click()
assert has_element?(view, "#edit-user-modal")
view
|> form("#edit-user-form", user: %{name: "Edited User", email: "edited@example.com"})
|> render_submit()
refute has_element?(view, "#edit-user-modal")
assert %{name: "Edited User", email: "edited@example.com"} =
Accounts.get_user_by_pubkey(user_pubkey)
end
test "a shared URL restores search, role, and page", %{conn: conn} do
admin = admin_fixture()
Enum.each(1..21, fn index ->
user_fixture(%{name: "Shareable User #{index}"})
end)
conn = init_test_session(conn, %{user_pubkey: admin.pubkey})
path = ~p"/admin/users?#{%{page: 2, search: "Shareable", role: "user"}}"
{:ok, view, _html} = live(conn, path)
assert has_element?(view, "#users-page-2[aria-current=page]")
assert has_element?(view, "#search_query[value='Shareable']")
assert has_element?(view, "#search_role option[value='user'][selected]")
assert has_element?(view, "#previous-users-page")
refute has_element?(view, "#next-users-page")
end
test "changing search criteria updates the shareable URL", %{conn: conn} do
admin = admin_fixture()
conn = init_test_session(conn, %{user_pubkey: admin.pubkey})
{:ok, view, _html} = live(conn, ~p"/admin/users")
view
|> form("#user-search-form", search: %{query: "alice", role: "admin"})
|> render_change()
assert_patch(
view,
~p"/admin/users?#{%{page: 1, search: "alice", role: "admin"}}"
)
end
end