public void EndGameRunningIsFalseTest()
        {
            // Arrange
            var repositoryMock = new Mock <IRepository <Room, long> >(MockBehavior.Strict);
            var publisherMock  = new Mock <IEventPublisher>(MockBehavior.Strict);

            var endCommand = new EndGameCommand()
            {
                RoomId = 1
            };
            var foundRoom = new Room()
            {
                Id = 1, Name = "Chess-01", Running = true
            };

            repositoryMock.Setup(x => x.Find(1)).Returns(foundRoom);
            repositoryMock.Setup(x => x.Update(foundRoom)).Returns(1);

            var target            = new RoomService(repositoryMock.Object, publisherMock.Object);
            var createRoomCommand = new CreateRoomCommand()
            {
                RoomName = "Chess-01"
            };

            // Act
            var result = target.EndGame(endCommand);

            // Assert
            repositoryMock.Verify(x => x.Find(endCommand.RoomId), Times.Once());
            repositoryMock.Verify(x => x.Update(It.IsAny <Room>()), Times.Once());

            Assert.IsNotNull(result);
            Assert.AreEqual(foundRoom.Name, result.Name);
            Assert.IsFalse(result.Running);
        }
Пример #2
0
 public IActionResult EndGame([FromBody] EndGameCommand endCommand)
 {
     if (ModelState.IsValid)
     {
         var error = new ErrorMessage(ErrorTypes.BadRequest, "Modelstate Invalide");
         return(BadRequest(error));
     }
     try
     {
         var room = _service.EndGame(endCommand);
         return(Ok(room));
     }
     catch (DbUpdateException)
     {
         var error = new ErrorMessage(ErrorTypes.NotFound,
                                      $"Fout met updaten game met volgende Command: RoomName:{endCommand.RoomName}, CommandId:{endCommand.CommandId}, TimeStamp:{endCommand.Timestamp}");
         return(NotFound(error));
     }
     catch (Exception)
     {
         var error = new ErrorMessage(ErrorTypes.Unknown,
                                      $"Onbekende fout met volgende Command: RoomName:{endCommand.RoomName}, CommandId:{endCommand.CommandId}, TimeStamp:{endCommand.Timestamp}");
         return(BadRequest(error));
     }
 }
Пример #3
0
        public async Task <ActionResult> PostEndGameAsync(Guid gameId, EndGameRequest request)
        {
            var command = new EndGameCommand(gameId, request.EndTime);
            await _endGameCommandHandler.HandleAsync(command);

            return(Ok());
        }
Пример #4
0
        public void EndGameCommand()
        {
            ICommand endGameCommand = new EndGameCommand(_context);

            endGameCommand.Execute();

            Assert.IsTrue(_context.State is EndGameState);
        }
Пример #5
0
        public Room EndGame(EndGameCommand endCommand)
        {
            var room = _repository.Find(endCommand.RoomId);

            room.Running = false;
            _repository.Update(room);

            return(room);
        }
Пример #6
0
 public EndGame(EndGameState endGameState)
 {
     Action = (ecs, config) =>
     {
         var endGameCommand = new EndGameCommand()
         {
             EndGameState = endGameState
         };
         ecs.EnqueueCommand(endGameCommand);
     };
 }
        public void SuccesEndingGameCorrectCommand()
        {
            //Arrange
            var mock    = new Mock <RoomService>(MockBehavior.Strict);
            var command = new EndGameCommand();

            mock.Setup(x => x.EndGame(It.Is <EndGameCommand>(y => y == command)));
            var target = new RoomController(mock.Object);


            //Act
            target.EndGame(command);

            //Assert
            mock.Verify(x => x.EndGame(It.Is <EndGameCommand>(y => y == command)), Times.Once);
        }
Пример #8
0
        /// <summary>
        /// Transitates to the next round
        /// </summary>
        private void NextRound()
        {
            bool        accepted;
            int         commitedAt;
            RaftCommand command;

            if (this.State != State.LEADER)
            {
                return;
            }

            if (!this.HasGameStarted)
            {
                return;
            }
            // Console.WriteLine($"{DateTime.Now.ToString("yyyyMMddHHmmssfff")} ON NextRound {this.Address} in State {this.State}");
            if (this.StateMachine.HasGameEnded())
            {
                this.HasGameStarted = false;
                Console.WriteLine("  GAME HAS ENDED");
                Console.WriteLine(this.StateMachine.Stage.GetPlayers().Count > 0);


                command = new EndGameCommand();

                this.OnCommand(command);
                // TODO: handle clients and server lists
                // TODO: Generate Log Entry and multicast AppendEntries
                return;
            }

            command = new NewRoundCommand()
            {
                Name = "New Round"
            };


            this.OnCommand(command);
        }
Пример #9
0
 internal void Apply(EndGameCommand command)
 {
     ApplyDomainEvent(new MatchEndedEvent(Id, command.Winner));
 }