From 7b2fa5cc8eb23fe05de8380242d4e8d693b834eb Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Fri, 23 Feb 2018 13:49:33 -0500 Subject: [PATCH] Update game data test to account for foreign key constraint --- test/chess/store/game_test.exs | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/test/chess/store/game_test.exs b/test/chess/store/game_test.exs index f4bd465..899bc34 100644 --- a/test/chess/store/game_test.exs +++ b/test/chess/store/game_test.exs @@ -2,40 +2,66 @@ defmodule Chess.GameTest do use Chess.DataCase describe "game" do + alias Chess.Repo alias Chess.Store.Game + import Chess.Factory, only: [create_user: 2] + test "game is valid with a board and user" do + user = create_user("link", "ilovezelda") + opponent = create_user("zelda", "ganonsucks") + + attrs = %{board: %{}, user_id: user.id, opponent_id: opponent.id} + changeset = Game.changeset(%Game{}, attrs) + + assert changeset.valid? + assert {:ok, _game} = Repo.insert(changeset) + end + + test "game cannot be saved if the user or opponent do not exist" do attrs = %{board: %{}, user_id: 1, opponent_id: 2} changeset = Game.changeset(%Game{}, attrs) assert changeset.valid? + assert {:error, _changeset} = Repo.insert(changeset) end test "game is invalid without a board" do - attrs = %{user_id: 1, opponent_id: 2} + user = create_user("link", "ilovezelda") + opponent = create_user("zelda", "ganonsucks") + + attrs = %{user_id: user.id, opponent_id: opponent.id} changeset = Game.changeset(%Game{}, attrs) refute changeset.valid? + assert {:error, _changeset} = Repo.insert(changeset) end test "game is invalid without a user" do - attrs = %{board: %{}, opponent_id: 2} + opponent = create_user("zelda", "ganonsucks") + + attrs = %{board: %{}, opponent_id: opponent.id} changeset = Game.changeset(%Game{}, attrs) refute changeset.valid? + assert {:error, _changeset} = Repo.insert(changeset) end test "game is invalid without an opponent" do - attrs = %{board: %{}, user_id: 1} + user = create_user("link", "ilovezelda") + + attrs = %{board: %{}, user_id: user.id} changeset = Game.changeset(%Game{}, attrs) refute changeset.valid? + assert {:error, _changeset} = Repo.insert(changeset) end test "game is invalid without anything" do changeset = Game.changeset(%Game{}, %{}) refute changeset.valid? + assert {:error, _changeset} = Repo.insert(changeset) end end end