public async Task UpdateDifficulties()
        {
            // Arrange
            var difficulty = context.Difficulties.FirstOrDefault(d => d.Id == 1);

            difficulty.Name = string.Format("{0} UPDATED!", difficulty.Name);

            // Act
            var result = await sut.Update(difficulty);

            // Assert
            Assert.That(result.Success, Is.True);
            Assert.That(result.Object, Is.InstanceOf <Difficulty>());
            Assert.That(((Difficulty)result.Object).Name, Is.EqualTo(difficulty.Name));
        }
        public async Task <IBaseResult> UpdateDifficulty(
            int id,
            IUpdateDifficultyRequest updateDifficultyRequest)
        {
            if (updateDifficultyRequest == null)
            {
                throw new ArgumentNullException(nameof(updateDifficultyRequest));
            }

            var result = new BaseResult();

            if (id == 0)
            {
                result.Success = false;
                result.Message = DifficultiesMessages.DifficultiesNotFoundMessage;

                return(result);
            }

            try
            {
                var response = await difficultiesRepository.GetById(id);

                if (response.Success)
                {
                    ((Difficulty)response.Object).Name        = updateDifficultyRequest.Name;
                    ((Difficulty)response.Object).DisplayName = updateDifficultyRequest.DisplayName;

                    var updateDifficultyResponse = await difficultiesRepository
                                                   .Update((Difficulty)response.Object);

                    if (updateDifficultyResponse.Success)
                    {
                        result.Success = updateDifficultyResponse.Success;
                        result.Message = DifficultiesMessages.DifficultyUpdatedMessage;

                        return(result);
                    }
                    else if (!updateDifficultyResponse.Success && updateDifficultyResponse.Exception != null)
                    {
                        result.Success = updateDifficultyResponse.Success;
                        result.Message = updateDifficultyResponse.Exception.Message;

                        return(result);
                    }
                    else
                    {
                        result.Success = false;
                        result.Message = DifficultiesMessages.DifficultyNotUpdatedMessage;

                        return(result);
                    }
                }
                else if (!response.Success && response.Exception != null)
                {
                    result.Success = response.Success;
                    result.Message = response.Exception.Message;

                    return(result);
                }
                else
                {
                    result.Success = false;
                    result.Message = DifficultiesMessages.DifficultyNotFoundMessage;

                    return(result);
                }
            }
            catch (Exception exp)
            {
                result.Success = false;
                result.Message = exp.Message;

                return(result);
            }
        }