- Fix invalid CSS selector in user registration test by replacing `fl-contains` with proper href attribute selector - Disable telemetry database metrics collection in test environment to prevent database ownership errors from telemetry poller This eliminates the GenServer termination errors that were occurring during test runs due to invalid CSS selectors and database access issues in background telemetry processes. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
87 lines
2.6 KiB
Elixir
87 lines
2.6 KiB
Elixir
defmodule AprsmeWeb.UserRegistrationLiveTest do
|
|
use AprsmeWeb.ConnCase
|
|
|
|
import Aprsme.AccountsFixtures
|
|
import Phoenix.LiveViewTest
|
|
|
|
describe "Registration page" do
|
|
test "renders registration page", %{conn: conn} do
|
|
{:ok, _lv, html} = live(conn, ~p"/users/register")
|
|
|
|
assert html =~ "Register"
|
|
assert html =~ "Log in"
|
|
end
|
|
|
|
test "redirects if already logged in", %{conn: conn} do
|
|
result =
|
|
conn
|
|
|> log_in_user(user_fixture())
|
|
|> live(~p"/users/register")
|
|
|> follow_redirect(conn, "/")
|
|
|
|
assert {:ok, _conn} = result
|
|
end
|
|
|
|
test "renders errors for invalid data", %{conn: conn} do
|
|
{:ok, lv, _html} = live(conn, ~p"/users/register")
|
|
|
|
result =
|
|
lv
|
|
|> element("#registration_form")
|
|
|> render_change(user: %{"email" => "with spaces", "password" => "too short", "callsign" => "INVALID"})
|
|
|
|
assert result =~ "Register"
|
|
assert result =~ "must have the @ sign and no spaces"
|
|
assert result =~ "should be at least 12 character"
|
|
assert result =~ "must be a valid amateur radio callsign"
|
|
end
|
|
end
|
|
|
|
describe "register user" do
|
|
test "creates account and logs the user in", %{conn: conn} do
|
|
{:ok, lv, _html} = live(conn, ~p"/users/register")
|
|
|
|
email = unique_user_email()
|
|
form = form(lv, "#registration_form", user: valid_user_attributes(email: email))
|
|
render_submit(form)
|
|
conn = follow_trigger_action(form, conn)
|
|
|
|
assert redirected_to(conn) == ~p"/"
|
|
|
|
# Confirm the user is logged in by checking they can access a protected page
|
|
conn = get(conn, "/users/settings")
|
|
response = html_response(conn, 200)
|
|
assert response =~ "Account Settings"
|
|
assert response =~ "Change Email"
|
|
end
|
|
|
|
test "renders errors for duplicated email", %{conn: conn} do
|
|
{:ok, lv, _html} = live(conn, ~p"/users/register")
|
|
|
|
user = user_fixture(%{email: "test@email.com"})
|
|
|
|
result =
|
|
lv
|
|
|> form("#registration_form",
|
|
user: %{"email" => user.email, "password" => "valid_password"}
|
|
)
|
|
|> render_submit()
|
|
|
|
assert result =~ "has already been taken"
|
|
end
|
|
end
|
|
|
|
describe "registration navigation" do
|
|
test "redirects to login page when the Log in button is clicked", %{conn: conn} do
|
|
{:ok, lv, _html} = live(conn, ~p"/users/register")
|
|
|
|
{:ok, _login_live, login_html} =
|
|
lv
|
|
|> element(~s|main a[href="/users/log_in"]|)
|
|
|> render_click()
|
|
|> follow_redirect(conn, ~p"/users/log_in")
|
|
|
|
assert login_html =~ "Log in"
|
|
end
|
|
end
|
|
end
|