private void CorrectFlow() { id = Builder <int> .CreateNew().Build(); okResult = Result.Ok(id); errorResult = Result.Error <int>("Error"); command = Builder <AddOrUpdateProductCommand> .CreateNew().Build(); mediator.Setup(m => m.Send(It.IsAny <AddOrUpdateProductCommand>(), It.IsAny <CancellationToken>())) .ReturnsAsync(okResult); }
public async Task <Result <int> > Handle(AddOrUpdateProductCommand request, CancellationToken cancellationToken) { if (request.Id == 0) { var product = _mapper.Map <Product>(request); var result = _validator.Validate(product); if (!result.IsValid) { return(Result.Error <int>(result.Errors)); } await _dataContext.Products.AddAsync(product, cancellationToken); await _dataContext.SaveChangesAsync(cancellationToken); return(Result.Ok(product.Id)); } else { var product = new Product { Id = request.Id }; _dataContext.Products.Attach(product); product.Name = request.Name; product.Description = request.Description; product.CategoryId = request.CategoryId; product.Price = request.Price; var result = await _validator.ValidateAsync(product, cancellationToken); if (!result.IsValid) { return(Result.Error <int>(result.Errors)); } await _dataContext.SaveChangesAsync(cancellationToken); return(Result.Ok(request.Id)); } }
public async Task <IActionResult> Put([FromBody] AddOrUpdateProductCommand command, CancellationToken cancellationToken = default) { var result = await _mediator.Send(command, cancellationToken); return(result.Process(ModelState)); }