From caa68d41f836bbd0aa5cbdcb1850e2eceb6498d2 Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Fri, 4 May 2018 22:41:27 +0200 Subject: [PATCH] Make changeset function responsible for the move --- lib/chess/store/game.ex | 6 +++++- lib/chess_web/channels/game_channel.ex | 6 +----- test/chess/store/game_test.exs | 4 +--- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/chess/store/game.ex b/lib/chess/store/game.ex index 1d18022..d7b3fad 100644 --- a/lib/chess/store/game.ex +++ b/lib/chess/store/game.ex @@ -35,7 +35,11 @@ defmodule Chess.Store.Game do |> foreign_key_constraint(:opponent_id) end - def move_changeset(struct, params \\ %{}) do + def move_changeset(struct, move_params) do + params = %{ + board: Board.move_piece(struct.board, move_params), + } + struct |> cast(params, required_attrs()) |> validate_king_in_check(struct, params) diff --git a/lib/chess_web/channels/game_channel.ex b/lib/chess_web/channels/game_channel.ex index 79bdecb..108e9ea 100644 --- a/lib/chess_web/channels/game_channel.ex +++ b/lib/chess_web/channels/game_channel.ex @@ -38,11 +38,7 @@ defmodule ChessWeb.GameChannel do |> Game.for_user_id() |> Repo.get!(socket.assigns.game_id) - changeset = Game.move_changeset( - game, %{ - board: Board.move_piece(game.board, move_params), - } - ) + changeset = Game.move_changeset(game, move_params) case Repo.update(changeset) do {:ok, game} -> diff --git a/test/chess/store/game_test.exs b/test/chess/store/game_test.exs index 32fc0c8..e55eb35 100644 --- a/test/chess/store/game_test.exs +++ b/test/chess/store/game_test.exs @@ -89,9 +89,7 @@ defmodule Chess.GameTest do move_params = %{"from" => [4, 1], "to" => [4, 3]} - changeset = Game.move_changeset(game, %{ - board: Board.move_piece(game.board, move_params), - }) + changeset = Game.move_changeset(game, move_params) assert {:ok, new_game} = Repo.update(changeset) assert new_game.turn == "black"