diff --git a/lib/chess/store/game.ex b/lib/chess/store/game.ex index 3617a2e..d55c58a 100644 --- a/lib/chess/store/game.ex +++ b/lib/chess/store/game.ex @@ -11,8 +11,8 @@ defmodule Chess.Store.Game do alias Chess.Store.Game schema "games" do - field :board, :map - field :turn, :string + field :board, :map, default: Board.default() + field :turn, :string, default: "white" belongs_to :user, Chess.Auth.User belongs_to :opponent, Chess.Auth.User, references: :id @@ -20,16 +20,6 @@ defmodule Chess.Store.Game do timestamps() end - def create_changeset(struct, params \\ %{}) do - struct - |> cast(params, required_attrs()) - |> foreign_key_constraint(:user_id) - |> foreign_key_constraint(:opponent_id) - |> put_change(:board, Board.default()) - |> put_change(:turn, default_turn()) - |> validate_required(required_attrs()) - end - def changeset(struct, params \\ %{}) do struct |> cast(params, required_attrs()) @@ -53,8 +43,4 @@ defmodule Chess.Store.Game do end defp required_attrs, do: ~w[board turn user_id opponent_id]a - - defp default_turn do - "white" - end end diff --git a/lib/chess_web/controllers/game_controller.ex b/lib/chess_web/controllers/game_controller.ex index dbcd6b5..e26e6e3 100644 --- a/lib/chess_web/controllers/game_controller.ex +++ b/lib/chess_web/controllers/game_controller.ex @@ -31,7 +31,7 @@ defmodule ChessWeb.GameController do end def create(conn, %{"game" => %{"opponent_id" => opponent_id}}) do - changeset = Game.create_changeset( + changeset = Game.changeset( %Game{}, %{ user_id: current_user(conn).id, diff --git a/test/chess/store/game_test.exs b/test/chess/store/game_test.exs index 41ead26..7d17615 100644 --- a/test/chess/store/game_test.exs +++ b/test/chess/store/game_test.exs @@ -40,7 +40,7 @@ defmodule Chess.GameTest do user = create_user("link", "ilovezelda") opponent = create_user("zelda", "ganonsucks") - attrs = %{user_id: user.id, opponent_id: opponent.id} + attrs = %{board: nil, user_id: user.id, opponent_id: opponent.id} changeset = Game.changeset(%Game{}, attrs) refute changeset.valid? diff --git a/test/support/factory.ex b/test/support/factory.ex index 19120de..69d90cc 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -12,7 +12,7 @@ defmodule Chess.Factory do end def create_game_for(user, opponent) do - Game.create_changeset( + Game.changeset( %Game{}, %{user_id: user.id, opponent_id: opponent.id} )