public async Task <IActionResult> UpdateOptionAsync(Guid id, Guid optionId, UpdateProductOption productOption) { Guard.Against.NullGuid(id, nameof(id)); Guard.Against.NullGuid(optionId, nameof(optionId)); if (!ModelState.IsValid) { string messages = string.Join("; ", ModelState.Values .SelectMany(x => x.Errors) .Select(x => x.ErrorMessage)); return(BadRequest(ModelState)); } // Can use AutoMapper normally but ignoring for this var productOptionModel = new ProductOption { Id = optionId, ProductId = id, Name = productOption.Name, Description = productOption.Description, }; await _productOptionsRepository.UpdateAsync(productOptionModel); return(Ok()); }
public async Task DeleteProductOptionAsync_IsSuccessful_ReturnsTrue() { // Arrange var productId = Guid.NewGuid(); var optionId = Guid.NewGuid(); var dto = new UpdateProductOption() { Name = "Product Option Name 2", Description = "Product Option Description 2", }; var option = new ProductOption { Name = "Product Option Name 1", Description = "Product Option Description 1" }; _mockProductRepository .Setup(m => m.GetProductOptionAsync(It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(option); _mockProductRepository .Setup(m => m.DeleteProductOptionAsync(It.IsAny <Guid>())) .ReturnsAsync(true); // Act var result = await _sut.DeleteProductOptionAsync(productId, optionId); // Assert Assert.That(result, Is.True); }
public async Task <IActionResult> UpdateOption(Guid id, Guid optionId, UpdateProductOption request) { _logger.LogInformation($"[PUT] /products/{id}/options/{optionId}"); var result = await _productService.UpdateProductOptionAsync(id, optionId, request); return(Ok(result)); }
public void UpdateProductOptionAsync_OptionNotFound_ThrowsProductOptionNotFoundException() { // Arrange var productId = Guid.NewGuid(); var optionId = Guid.NewGuid(); var dto = new UpdateProductOption() { Name = "Product Option Name 2", Description = "Product Option Description 2", }; _mockProductRepository .Setup(m => m.GetProductOptionAsync(It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(null as ProductOption); // Assert Assert.That(() => _sut.UpdateProductOptionAsync(productId, optionId, dto), Throws.Exception.TypeOf <ProductOptionNotFoundException>()); }
public async Task UpdateProductOptionAsync_IsSuccessful_ReturnsTrue() { // Arrange var productId = Guid.NewGuid(); var optionId = Guid.NewGuid(); var dto = new UpdateProductOption() { Name = "Product Option Name 2", Description = "Product Option Description 2", }; var option = new ProductOption { Name = "Product Option Name 1", Description = "Product Option Description 1" }; var updatedOption = new ProductOption { Name = "Product Option Name 2", Description = "Product Option Description 2" }; _mockProductRepository .Setup(m => m.GetProductOptionAsync(It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(option); _mockProductRepository .Setup(m => m.UpdateProductOptionAsync(It.IsAny <ProductOption>())) .ReturnsAsync(updatedOption); // Act var result = await _sut.UpdateProductOptionAsync(productId, optionId, dto); // Assert Assert.AreEqual(updatedOption.Name, result.Name); Assert.AreEqual(updatedOption.Description, result.Description); }
public async Task <ProductOption> UpdateProductOptionAsync(Guid productId, Guid optionId, UpdateProductOption dto) { _logger.LogInformation($"Updating product option for product with id `{productId}` and option id `{optionId}`"); var option = await _productRepository.GetProductOptionAsync(productId, optionId); if (option == null) { throw new ProductOptionNotFoundException($"Could not find option with id `{optionId}` on product with id `{productId}`."); } return(await _productRepository.UpdateProductOptionAsync(dto.ToProductOption(productId, optionId))); }
public async Task <ActionResult <ViewProductOption> > UpdateProductOption(Guid id, Guid optionId, UpdateProductOption updateProductOption) { try { var productOption = await _productOptionsService.GetProductOption(id, optionId); if (productOption == null) { return(NotFound()); } var updatedProductOption = await _productOptionsService.UpdateProductOption(id, optionId, updateProductOption); return(Ok(updatedProductOption)); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode(500, new ApiResponse { Result = 1, Message = ex.Message })); } }
public async Task <ViewProductOption> UpdateProductOption(Guid productId, Guid optionId, UpdateProductOption updateProductOption) { var productOption = await GetOptionInDb(productId, optionId); _mapper.Map <UpdateProductOption, ProductOptions>(updateProductOption, productOption); await _context.SaveChangesAsync(); return(_mapper.Map <ViewProductOption>(productOption)); }