/** * @param Request $request * @param FormInterface $form * @param GameDetailDto $game * @param PlayerDto $player * * @return Response|null */ private function handlePlayerForm(Request $request, FormInterface $form, GameDetail $game, Player $player) { $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { if ($form->get('play')->isClicked()) { $turnNumber = $form->getData()->getTurnNumber(); $move = $form->getData()->getMove(); if ($move && $move->isPlay()) { $play = new Play($turnNumber, new Stone($move->getStoneTopValue(), $move->getStoneBottomValue()), $move->getSide() === 'left' ? Play::SIDE_LEFT : Play::SIDE_RIGHT); $this->gameService->play($game->getId(), $player->getNumber(), $play); return $this->redirectToRoute(self::ROUTE_PLAYER_DETAIL, ['gameId' => $form->getData()->getGameId(), 'playerNumber' => $form->getData()->getPlayerNumber()]); } } } return; }
public function testPlayCallsPlayOnPlayer() { $game = $this->createGameMock(42); $player = $this->createPlayerMock($game, 1, 'player 1'); $this->gameRepositoryMock->expects($this->once())->method('findById')->with($this->identicalTo(42))->willReturn($game); $game->expects($this->any())->method('getPlayerByPlayerNumber')->with($this->equalTo(3))->willReturn($player); $player->expects($this->once())->method('play')->with($this->equalToPlay(new Domain\Play(1, new Domain\Stone(6, 6), Domain\Table::SIDE_LEFT))); $turnNumber = 1; $playerNumber = 3; $play = new Dto\Play($turnNumber, new Dto\Stone(6, 6), Dto\Play::SIDE_LEFT); $this->gameService->play(42, $playerNumber, $play); }