registration_test.exs (2280B)
1 defmodule DailyTrackerWeb.UserLive.RegistrationTest do 2 use DailyTrackerWeb.ConnCase, async: true 3 4 import Phoenix.LiveViewTest 5 import DailyTracker.AccountsFixtures 6 7 describe "Registration page" do 8 test "renders registration page", %{conn: conn} do 9 {:ok, _lv, html} = live(conn, ~p"/users/register") 10 11 assert html =~ "Register" 12 assert html =~ "Log in" 13 end 14 15 test "redirects if already logged in", %{conn: conn} do 16 result = 17 conn 18 |> log_in_user(user_fixture()) 19 |> live(~p"/users/register") 20 |> follow_redirect(conn, ~p"/") 21 22 assert {:ok, _conn} = result 23 end 24 25 test "renders errors for invalid data", %{conn: conn} do 26 {:ok, lv, _html} = live(conn, ~p"/users/register") 27 28 result = 29 lv 30 |> element("#registration_form") 31 |> render_change(user: %{"email" => "with spaces"}) 32 33 assert result =~ "Register" 34 assert result =~ "must have the @ sign and no spaces" 35 end 36 end 37 38 describe "register user" do 39 test "creates account but does not log in", %{conn: conn} do 40 {:ok, lv, _html} = live(conn, ~p"/users/register") 41 42 email = unique_user_email() 43 form = form(lv, "#registration_form", user: valid_user_attributes(email: email)) 44 45 {:ok, _lv, html} = 46 render_submit(form) 47 |> follow_redirect(conn, ~p"/users/log-in") 48 49 assert html =~ 50 ~r/An email was sent to .*, please access it to confirm your account/ 51 end 52 53 test "renders errors for duplicated email", %{conn: conn} do 54 {:ok, lv, _html} = live(conn, ~p"/users/register") 55 56 user = user_fixture(%{email: "test@email.com"}) 57 58 result = 59 lv 60 |> form("#registration_form", 61 user: %{"email" => user.email} 62 ) 63 |> render_submit() 64 65 assert result =~ "has already been taken" 66 end 67 end 68 69 describe "registration navigation" do 70 test "redirects to login page when the Log in button is clicked", %{conn: conn} do 71 {:ok, lv, _html} = live(conn, ~p"/users/register") 72 73 {:ok, _login_live, login_html} = 74 lv 75 |> element("main a", "Log in") 76 |> render_click() 77 |> follow_redirect(conn, ~p"/users/log-in") 78 79 assert login_html =~ "Log in" 80 end 81 end 82 end