public async Task <EndSubmissionsResult> Handle(EndSubmissions request, CancellationToken cancellationToken) { using (var transaction = repositoryTransactionsFactory.CreateTransaction()) { var validationResult = await requestValidator.Validate(request); if (!validationResult.IsSuccessful) { return(new EndSubmissionsResult(validationResult.Error)); } var updated = await gameRoundsRepository .UpdateGameRoundStatus(request.GameRoundId, Common.Enums.GameRoundStatusEnum.Selection); if (!updated) { return(new EndSubmissionsResult(GameErrors.CouldNotEndAnswersSubmissions)); } var checkpoint = await gameCheckpointUpdater.Update(request.GameId, nameof(EndSubmissions)); transaction.CommitTransaction(); return(new EndSubmissionsResult()); } }
public async Task ReturnSuccessForValidData() { var baseMock = BaseGameRequestsValidatorMock.CreateMock(); var gameRoundRepo = GameRoundsRepositoryMock.Create( status: Common.Enums.GameRoundStatusEnum.InProgress).Object; var playerAnswersRepo = PlayerAnswersRepositoryMock.Create().Object; var gameOrRoundOnwerRuleMock = GameOrRoundOwnerRuleMock.Create <EndSubmissions>(); var validator = new EndSubmissionsValidator(baseMock.Object, gameRoundRepo, playerAnswersRepo, gameOrRoundOnwerRuleMock.Object); var request = new EndSubmissions { GameRoundId = 1, UserId = 1, GameId = 1, }; var result = await validator.Validate(request); Assert.True(result.IsSuccessful); baseMock.Verify(x => x.Validate(request)); gameOrRoundOnwerRuleMock.Verify(x => x.Validate(request)); }