Current section
Files
Jump to
Current section
Files
priv/templates/curator_registerable.install/controller_test.exs
defmodule <%= base %>.RegistrationControllerTest do
use <%= base %>.ConnCase
alias <%= base %>.User
@valid_attrs %{
email: "user@test.com",
password: "some content",
}
@invalid_attrs %{email: "fake_email"}
setup do
conn_with_session = build_conn()
|> conn_with_fetched_session
authorized_user = create_active_user
authorized_conn = <%= base %>.SessionHelper.sign_in(conn_with_session, authorized_user)
{:ok,
authorized_user: authorized_user,
unauthenticated_conn: conn_with_session,
authorized_conn: authorized_conn,
}
end
# NEW
test "renders form for new resources", %{unauthenticated_conn: conn} do
conn = get conn, registration_path(conn, :new)
assert html_response(conn, 200) =~ "New Account"
end
test "redirects when signed in for new resources", %{authorized_conn: conn} do
conn = get conn, registration_path(conn, :new)
assert Phoenix.Controller.get_flash(conn, :danger) == "Already Logged In"
assert Phoenix.ConnTest.redirected_to(conn) == page_path(conn, :index)
end
# CREATE
test "creates resource and redirects when data is valid", %{unauthenticated_conn: conn} do
conn = post conn, registration_path(conn, :create), user: @valid_attrs
assert Phoenix.Controller.get_flash(conn, :info) == "Account was successfully created."
assert redirected_to(conn) == "/"
assert Repo.get_by(User, email: @valid_attrs.email)
end
test "redirects when signed in when data is valid", %{authorized_conn: conn} do
conn = post conn, registration_path(conn, :create), user: @valid_attrs
assert Phoenix.Controller.get_flash(conn, :danger) == "Already Logged In"
assert Phoenix.ConnTest.redirected_to(conn) == page_path(conn, :index)
end
test "does not create resource and renders errors when data is invalid", %{unauthenticated_conn: conn} do
conn = post conn, registration_path(conn, :create), user: @invalid_attrs
assert html_response(conn, 200) =~ "New Account"
end
# EDIT
test "renders form for editing User", %{authorized_conn: conn} do
conn = get conn, registration_path(conn, :edit)
assert html_response(conn, 200) =~ "Edit Account"
end
test "doesn't render form for editing user (of unauthenticated user)", %{unauthenticated_conn: conn} do
conn = get conn, registration_path(conn, :edit)
assert Phoenix.Controller.get_flash(conn, :danger) == "Please Log In"
assert Phoenix.ConnTest.redirected_to(conn) == session_path(conn, :new)
end
# UPDATE
test "updates user and redirects when data is valid", %{authorized_conn: conn} do
conn = patch conn, registration_path(conn, :update), user: @valid_attrs
assert Phoenix.Controller.get_flash(conn, :info) == "Account updated successfully."
assert redirected_to(conn) == registration_path(conn, :show)
end
test "doesn't update user (of unauthenticated user)", %{unauthenticated_conn: conn} do
conn = patch conn, registration_path(conn, :update), user: @valid_attrs
assert Phoenix.Controller.get_flash(conn, :danger) == "Please Log In"
assert Phoenix.ConnTest.redirected_to(conn) == session_path(conn, :new)
end
# DELETE
test "deletes user", %{authorized_conn: conn, authorized_user: user} do
conn = delete conn, registration_path(conn, :delete)
assert Phoenix.Controller.get_flash(conn, :info) == "Account deleted successfully."
assert redirected_to(conn) == page_path(conn, :index)
refute Repo.get(User, user.id)
end
test "doesn't delete user (of unauthenticated user)", %{unauthenticated_conn: conn} do
conn = delete conn, registration_path(conn, :delete)
assert Phoenix.Controller.get_flash(conn, :danger) == "Please Log In"
assert Phoenix.ConnTest.redirected_to(conn) == session_path(conn, :new)
end
end