public void UpdateProductValidCommand() { var command = new UpdateProductCommand(new Guid(), "Nome Produto 1", decimal.Parse("10,00"), "stringBase64"); command.Validate(); Assert.AreEqual(command.Valid, true); }
public void UpdateProductInvalidCommand() { var command = new UpdateProductCommand(new Guid(), "", decimal.Parse("0"), null); command.Validate(); Assert.AreEqual(command.Valid, false); }
public IActionResult Update(UpdateProductCommand command) { var validation = command.Validate(); if (validation.HasErrors) { return(BadRequest(validation.ConvertToJson())); } _commandHandler.Handle(command); return(Ok()); }
public async Task <ICommandResult> Handle(UpdateProductCommand request, CancellationToken cancellationToken) { request.Validate(); if (!request.IsValid) { return(new CommandResult(false, "Problemas ao atualizar o produto..", request.Notifications)); } var requestedProduct = await _productRepository.GetProductAsync(request.Id); if (requestedProduct is null) { return(new CommandResult(false, "O Produto não foi encontrado", null)); } var productData = new ProductData(request.Name, request.Description); var productImage = _productFileService.ProcessProductImage(request.ImageBase64); productData.ChangeImage(productImage); var datetimeProduct = new DateTimeProduct(request.PurchaseDate, requestedProduct.DateTimeProduct.ExpirationDate); var productInformation = new ProductInformation(request.Quantity, request.MeasurementUnit); requestedProduct.ChangeProductData(productData); requestedProduct.ChangeDateTimeProduct(datetimeProduct); requestedProduct.ChangeProductInformation(productInformation); requestedProduct.ChangeStatus(request.ProductStatus); requestedProduct.ChangeCategory(request.Category); var updatedProduct = await _productRepository.UpdateProductAsync(requestedProduct); if (updatedProduct is null) { return(new CommandResult(false, "Problemas ao atualizar o produto..", null)); } if (!updatedProduct.VerifyQuantity()) { var buyingProduct = true; var productDomainEvent = new ProductOperationDomainEvent(EventAction.UPDATE, updatedProduct, buyingProduct); await _domainEntityEventHandler.Raise(productDomainEvent); } return(new CommandResult(true, "Produto atualizado com sucesso!", request)); }
public async Task <ICommandResult> HandleAsync(UpdateProductCommand command) { command.Validate(); if (command.Invalid) { return(new GenericCommandResult <ProductEntity>(false, command.Notifications)); } var product = await _repository.GetAsync(command.Id); product.SetName(command.Name); product.SetPrice(command.Price); await _repository.UpdateAsync(product); return(new GenericCommandResult <ProductEntity>(true, product)); }
public void update_product_command_id_is_required() { // Given _sut.Id = Guid.Empty; // When var validation = _sut.Validate(); // Then validation.HasErrors.Should().BeTrue(); validation.Errors.First().Should().Be(ExceptionCodes.ID_IS_REQUIRED); }
public ICommandResult Handle(UpdateProductCommand command) { command.Validate(); if (command.Invalid) { return(new GenericCommandResult(false, "Ocorreu um erro na atualização do produto, verifique os dados...", command.Notifications)); } Product product = _repository.GetById(command.Id); product.Name = command.Name; product.Value = command.Value; product.Image = command.Image; _repository.Update(product); return(new GenericCommandResult(true, "Produto atualizado com sucesso", product)); }
public void Update_Product_With_Valid_Id() { _commandWithValidId.Validate(); Assert.AreEqual(_commandWithValidId.Valid, true); }
public void Update_Product_With_Invalid_Id() { _commandWithInvalidId.Validate(); Assert.AreEqual(_commandWithInvalidId.Valid, false); }