1
0
mirror of https://github.com/danbee/chess synced 2025-03-04 08:39:06 +00:00
chess/test/features/games_test.exs
Dan Barber bedd6605ef
Redesign whole site in B&W
* Forms and board tweaks for small screen sizes
* Re-style game status indicators
* Re-style viewing/offline indicator
* Better eyecons 👁
* Re-organise CSS according to ITCSS principles
* Pick new font from Google Fonts
* Fix up tests
* Move some things into partials
2018-09-16 14:02:52 -04:00

101 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("game[opponent_id]", option: "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("game[opponent_id]", option: "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