mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
107 lines
2.4 KiB
Elixir
107 lines
2.4 KiB
Elixir
defmodule Chess.Features.GamesTest do
|
|
use ChessWeb.FeatureCase
|
|
|
|
import Wallaby.Query
|
|
import Chess.Factory
|
|
|
|
import Chess.AuthenticationHelpers
|
|
import Chess.FormHelpers
|
|
|
|
test "visit homepage", %{session: session} do
|
|
session
|
|
|> visit("/")
|
|
|> assert_has(css("header h1", text: "64squares"))
|
|
end
|
|
|
|
test "can create a new game", %{session: session} do
|
|
insert(:user, %{
|
|
name: "Zelda",
|
|
email: "zelda@hyrule.com",
|
|
password: "ganonsucks"
|
|
})
|
|
|
|
session
|
|
|> create_user_and_login()
|
|
|> visit("/games")
|
|
|> click(link("New game"))
|
|
|> select_opponent("Zelda")
|
|
|> click(button("Create game"))
|
|
|
|
session
|
|
|> assert_has(css("p", text: "Playing Zelda"))
|
|
|> assert_has(css(".board"))
|
|
end
|
|
|
|
test "cannot create a game without an opponent", %{session: session} do
|
|
session
|
|
|> create_user_and_login()
|
|
|> visit("/games")
|
|
|> click(link("New game"))
|
|
|> click(button("Create game"))
|
|
|
|
session
|
|
|> assert_has(css(".help-block", text: "can't be blank"))
|
|
end
|
|
|
|
test "can only see own games", %{session: session} do
|
|
opponent =
|
|
insert(:user, %{
|
|
name: "Urbosa",
|
|
email: "urbosa@gerudo.town",
|
|
password: "gerudoqueen"
|
|
})
|
|
|
|
user =
|
|
insert(:user, %{
|
|
name: "Zelda",
|
|
email: "zelda@hyrule.com",
|
|
password: "ganonsucks"
|
|
})
|
|
|
|
insert(:game, %{user_id: user.id, opponent_id: opponent.id})
|
|
|
|
session
|
|
|> create_user_and_login()
|
|
|> visit("/games")
|
|
|> click(link("New game"))
|
|
|> select_opponent("Urbosa")
|
|
|> click(button("Create game"))
|
|
|> click(link("64squares"))
|
|
|
|
session
|
|
|> assert_has(css(".games-list tr", count: 1))
|
|
|> assert_has(link("Game with Urbosa"))
|
|
end
|
|
|
|
test "can see games as an opponent", %{session: session} do
|
|
opponent =
|
|
insert(:user, %{
|
|
name: "Urbosa",
|
|
email: "urbosa@gerudo.town",
|
|
password: "gerudoqueen"
|
|
})
|
|
|
|
user =
|
|
insert(:user, %{
|
|
name: "Zelda",
|
|
email: "zelda@hyrule.com",
|
|
password: "ganonsucks"
|
|
})
|
|
|
|
insert(:game, %{user_id: user.id, opponent_id: opponent.id})
|
|
|
|
session
|
|
|> login("urbosa@gerudo.town", "gerudoqueen")
|
|
|
|
session
|
|
|> assert_has(css(".games-list tr", count: 1))
|
|
|> assert_has(link("Game with Zelda"))
|
|
|
|
session
|
|
|> click(link("Game with Zelda"))
|
|
|
|
session
|
|
|> assert_has(css("p", text: "Playing Zelda"))
|
|
end
|
|
end
|