From 070f9b1474a1a0bdcca551dcb199efc1e0d3b038 Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Mon, 19 Feb 2018 14:01:46 -0500 Subject: [PATCH] Fix and refactor game controller tests --- .../controllers/game_controller_test.exs | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/test/chess_web/controllers/game_controller_test.exs b/test/chess_web/controllers/game_controller_test.exs index 4da8f4c..3182e21 100644 --- a/test/chess_web/controllers/game_controller_test.exs +++ b/test/chess_web/controllers/game_controller_test.exs @@ -4,11 +4,17 @@ defmodule Chess.GameControllerTest do alias Chess.Store.Game alias Chess.Auth.Guardian - import Chess.Factory, only: [create_user: 0, create_user: 2] + import Chess.Factory, + only: [create_user: 0, create_user: 2, create_game_for: 2] test "lists all entries on index", %{conn: conn} do - conn = login(conn) - conn = get conn, game_path(conn, :index) + user = create_user() + + conn = + conn + |> login(user) + |> get(game_path(conn, :index)) + assert html_response(conn, 200) =~ "Listing games" end @@ -16,21 +22,35 @@ defmodule Chess.GameControllerTest do opponent = create_user("daruk", "deathmountain") attrs = %{"opponent_id" => opponent.id} - conn = login(conn) - conn = post conn, game_path(conn, :create), game: attrs + user = create_user() + + conn = + conn + |> login(user) + |> post(game_path(conn, :create), game: attrs) + game = Repo.one(Game) + assert redirected_to(conn) == game_path(conn, :show, game) end test "shows chosen resource", %{conn: conn} do - conn = login(conn) - game = Repo.insert! %Game{} - conn = get conn, game_path(conn, :show, game) + user = create_user() + opponent = create_user("revali", "vahmedoh") + game = create_game_for(user, opponent) + + conn = + conn + |> login(user) + |> get(game_path(conn, :show, game)) + assert html_response(conn, 200) =~ "
" end test "renders page not found when id is nonexistent", %{conn: conn} do - conn = login(conn) + user = create_user() + conn = login(conn, user) + assert_error_sent 404, fn -> get conn, game_path(conn, :show, -1) end @@ -38,14 +58,15 @@ defmodule Chess.GameControllerTest do test "deletes chosen resource", %{conn: conn} do game = Repo.insert! %Game{} - conn = login(conn) + user = create_user() + conn = login(conn, user) conn = delete conn, game_path(conn, :delete, game) assert redirected_to(conn) == game_path(conn, :index) refute Repo.get(Game, game.id) end - defp login(conn) do - user = create_user() - conn |> Guardian.Plug.sign_in(user) + defp login(conn, user) do + conn + |> Guardian.Plug.sign_in(user) end end