public async Task Update_UpdatingFailed_AddLogAndReturnServiceErrorResult()
        {
            // Arrange
            var request = new UpdateSampleRequest {
                Id = 1
            };
            var model = new Sample {
                Id = 1, CreatedDate = It.IsAny <DateTime>()
            };
            var exception     = It.IsAny <Exception>();
            var serviceResult = ServiceResult.Error(Messages.UpdatingFailed);

            repository.Setup(x => x.GetAsync(s => s.Id == request.Id)).ReturnsAsync(model);
            sampleFactory.Setup(x => x.CreateUpdateSample(model, request)).Returns(model);
            repository.Setup(x => x.Update(model)).Throws(exception);

            // Act
            var result = await service.Update(request);

            // Assert
            result.IsSuccess.Should().BeFalse();
            result.Message.Should().Be(serviceResult.Message);
            unitOfWork.Verify(x => x.Save(), Times.Never);
            AssertHelpers.VerifyLogger(logger, LogLevel.Error, Times.Once());
        }
        public async Task Add_AddingFailed_AddLogAndReturnServiceErrorResult()
        {
            // Arrange
            var request       = new AddSampleRequest();
            var model         = new Sample();
            var exception     = It.IsAny <Exception>();
            var serviceResult = ServiceResult.Error(Messages.AddingFailed);

            sampleFactory.Setup(x => x.CreateAddSample(request)).Returns(model);
            repository.Setup(x => x.AddAsync(model)).ThrowsAsync(exception);

            // Act
            var result = await service.Add(request);

            // Assert
            result.IsSuccess.Should().BeFalse();
            result.Message.Should().Be(serviceResult.Message);
            unitOfWork.Verify(x => x.Save(), Times.Never);
            AssertHelpers.VerifyLogger(logger, LogLevel.Error, Times.Once());
        }
        public async Task Delete_DeletingFailed_AddLogAndReturnServiceErrorResult()
        {
            // Arrange
            const int id    = 1;
            var       model = new Sample {
                Id = id
            };
            var exception     = It.IsAny <Exception>();
            var serviceResult = ServiceResult.Error(Messages.DeletingFailed);

            repository.Setup(x => x.GetAsync(s => s.Id == id)).ReturnsAsync(model);
            repository.Setup(x => x.Delete(model)).Throws(exception);

            // Act
            var result = await service.Delete(id);

            // Assert
            result.IsSuccess.Should().BeFalse();
            result.Message.Should().Be(serviceResult.Message);
            unitOfWork.Verify(x => x.Save(), Times.Never);
            AssertHelpers.VerifyLogger(logger, LogLevel.Error, Times.Once());
        }