daily-tracker

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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