Example #1
0
 public Sample CreateAddSample(AddSampleRequest request)
 {
     return(new Sample
     {
         Title = request.Title,
         CreatedBy = "user-1"
     });
 }
Example #2
0
        public ServiceResult Add(AddSampleRequest request)
        {
            var sample = factory.CreateAddSample(request);
            var result = repository.Insert(sample);

            return(string.IsNullOrEmpty(result)
                ? ServiceResult.Error(Messages.AddingFailed)
                : ServiceResult.Success(Messages.AddingSuccess));
        }
        public async Task <IActionResult> Post([FromBody] AddSampleRequest request)
        {
            var validationResult = RequestValidator.Validate(request);

            if (!validationResult.IsValid)
            {
                return(BadRequest(Messages.InvalidRequest));
            }

            var result = await sampleService.Add(request);

            return(Ok(result));
        }
Example #4
0
      public IActionResult Post(AddSampleRequest request)
      {
          var validationResult = requestValidator.Validate(request);

          if (!validationResult.IsValid)
          {
              return(BadRequest(Messages.InvalidRequest));
          }

          var result = sampleService.Add(request);

          return(!result.IsSuccess
                 ? Problem(Messages.GeneralError)
                 : Ok(result.Message));
      }
Example #5
0
        public async Task Post_InvalidRequest_ReturnBadRequest()
        {
            // Arrange
            var request          = new AddSampleRequest();
            var validationResult = ValidationResult.Error("invalid request");
            var apiResult        = new BadRequestObjectResult(Messages.InvalidRequest);

            requestValidator.Setup(x => x.Validate(request)).Returns(validationResult);

            // Act
            var result = await controller.Post(request);

            // Assert
            result.Should().BeEquivalentTo(apiResult);
        }
Example #6
0
        public async Task Post_AddingSucceeds_ReturnSuccessResult()
        {
            // Arrange
            var request          = new AddSampleRequest();
            var validationResult = ValidationResult.Success;
            var serviceResult    = ServiceResult.Success();
            var apiResult        = new OkObjectResult(serviceResult);

            requestValidator.Setup(x => x.Validate(request)).Returns(validationResult);
            sampleService.Setup(x => x.Add(request)).ReturnsAsync(serviceResult);

            // Act
            var result = await controller.Post(request);

            // Assert
            result.Should().BeEquivalentTo(apiResult);
        }
Example #7
0
        public void CreateAddSample_NoCondition_ReturnSample()
        {
            // Arrange
            const string userId  = "user-1";
            var          request = new AddSampleRequest
            {
                Title = "Sample Title"
            };

            // Act
            var result = factory.CreateAddSample(request);

            // Assert
            result.Title.Should().Be(request.Title);
            result.CreatedBy.Should().Be(userId);
            result.CreatedDate.Should().BeCloseTo(DateTime.Now, 100, "dates should differ at milliseconds level");
        }
        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 Add_AddingSuccess_AddToDbAndReturnServiceSuccessResult()
        {
            // Arrange
            var        request       = new AddSampleRequest();
            var        model         = new Sample();
            const bool isAdded       = true;
            var        serviceResult = ServiceResult.Success(Messages.AddingSuccess);

            sampleFactory.Setup(x => x.CreateAddSample(request)).Returns(model);
            repository.Setup(x => x.AddAsync(model)).ReturnsAsync(isAdded);

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

            // Assert
            result.IsSuccess.Should().BeTrue();
            result.Message.Should().Be(serviceResult.Message);
            unitOfWork.Verify(x => x.Save(), Times.Once);
            cachingService.Verify(x => x.Set($"{CacheKey.Sample}-{model.Id}", model), Times.Once);
        }
Example #10
0
        public async Task <ServiceResult> Add(AddSampleRequest request)
        {
            var sample = sampleFactory.CreateAddSample(request);

            try
            {
                await repository.AddAsync(sample);

                UnitOfWork.Save();

                AddSampleToCache(sample);
                await RefreshCachedSampleList();

                return(ServiceResult.Success(Messages.AddingSuccess));
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                return(ServiceResult.Error(Messages.AddingFailed));
            }
        }