oneshot
This commit is contained in:
@@ -1,8 +1,14 @@
|
||||
defmodule Rsh26poolWeb.PageControllerTest do
|
||||
use Rsh26poolWeb.ConnCase
|
||||
|
||||
test "GET /", %{conn: conn} do
|
||||
test "GET / renders the Japanese home with create and enter entry points", %{conn: conn} do
|
||||
conn = get(conn, ~p"/")
|
||||
assert html_response(conn, 200) =~ "Peace of mind from prototype to production"
|
||||
response = html_response(conn, 200)
|
||||
|
||||
assert response =~ "みんなで"
|
||||
assert response =~ "ルームを作成"
|
||||
assert response =~ "ルームに参加"
|
||||
assert response =~ ~p"/create"
|
||||
assert response =~ ~p"/enter"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
defmodule Rsh26poolWeb.RoomControllerTest do
|
||||
use Rsh26poolWeb.ConnCase, async: true
|
||||
|
||||
alias Rsh26pool.Voting
|
||||
|
||||
defp valid_room_params(overrides \\ %{}) do
|
||||
Map.merge(
|
||||
%{
|
||||
"name" => "テストルーム",
|
||||
"votes_per_user" => "3",
|
||||
"grouping_mode" => "false",
|
||||
"leader_threshold" => "2",
|
||||
"closes_at_local" => ""
|
||||
},
|
||||
overrides
|
||||
)
|
||||
end
|
||||
|
||||
describe "POST /create" do
|
||||
test "valid params redirect to the manage page and log in the owner", %{conn: conn} do
|
||||
conn = post(conn, ~p"/create", room: valid_room_params(%{"name" => "作成テスト"}))
|
||||
|
||||
path = redirected_to(conn)
|
||||
assert "/manage/" <> number = path
|
||||
assert number =~ ~r/^\d{6}$/
|
||||
|
||||
token = get_session(conn, "participant_token")
|
||||
assert token
|
||||
|
||||
owner = Voting.get_participant_by_token(token)
|
||||
assert owner.role == "owner"
|
||||
assert owner.room.room_number == number
|
||||
assert owner.room.name == "作成テスト"
|
||||
end
|
||||
|
||||
test "invalid params re-render the form with a Japanese error and no login", %{conn: conn} do
|
||||
conn = post(conn, ~p"/create", room: valid_room_params(%{"name" => ""}))
|
||||
|
||||
assert html_response(conn, 200)
|
||||
assert Phoenix.Flash.get(conn.assigns.flash, :error) =~ "ルームを作成できませんでした"
|
||||
assert get_session(conn, "participant_token") == nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST /enter" do
|
||||
test "a valid room number and name redirect to the vote page and log in", %{conn: conn} do
|
||||
{:ok, %{room: room}} = Voting.create_room(valid_room_params(%{"name" => "参加先"}))
|
||||
|
||||
conn = post(conn, ~p"/enter", enter: %{"room_number" => room.room_number, "name" => "花子"})
|
||||
|
||||
assert redirected_to(conn) == ~p"/vote/#{room.room_number}"
|
||||
|
||||
token = get_session(conn, "participant_token")
|
||||
assert token
|
||||
|
||||
participant = Voting.get_participant_by_token(token)
|
||||
assert participant.name == "花子"
|
||||
assert participant.role == "member"
|
||||
assert participant.room.id == room.id
|
||||
end
|
||||
|
||||
test "an unknown room number stays on the page with a not-found flash", %{conn: conn} do
|
||||
conn = post(conn, ~p"/enter", enter: %{"room_number" => "000000", "name" => "花子"})
|
||||
|
||||
assert html_response(conn, 200)
|
||||
assert Phoenix.Flash.get(conn.assigns.flash, :error) =~ "見つかりません"
|
||||
assert get_session(conn, "participant_token") == nil
|
||||
end
|
||||
|
||||
test "blank fields stay on the page with a validation flash", %{conn: conn} do
|
||||
conn = post(conn, ~p"/enter", enter: %{"room_number" => "", "name" => ""})
|
||||
|
||||
assert html_response(conn, 200)
|
||||
assert Phoenix.Flash.get(conn.assigns.flash, :error) =~ "ルーム番号と名前を入力してください"
|
||||
assert get_session(conn, "participant_token") == nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "DELETE /logout" do
|
||||
test "clears the session token and redirects home", %{conn: conn} do
|
||||
{:ok, %{owner: owner}} = Voting.create_room(valid_room_params())
|
||||
|
||||
conn =
|
||||
conn
|
||||
|> Plug.Test.init_test_session(%{"participant_token" => owner.token})
|
||||
|> delete(~p"/logout")
|
||||
|
||||
assert redirected_to(conn) == ~p"/"
|
||||
assert get_session(conn, "participant_token") == nil
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user