public async Task <IActionResult> CreateOption(Guid id, CreateProductOption request) { _logger.LogInformation($"[POST] /products/{id}/options"); var result = await _productService.CreateProductOptionAsync(id, request); return(Ok(result)); }
public async Task <ProductOption> CreateProductOptionAsync(Guid productId, CreateProductOption dto) { _logger.LogInformation($"Creating option {JsonConvert.SerializeObject(dto)} for product with id `{productId}`"); var product = await _productRepository.GetProductAsync(productId); if (product == null) { throw new ProductNotFoundException($"Could not find product with id `{productId}`."); } return(await _productRepository.CreateProductOptionAsync(dto.ToProductOption(productId))); }
public async Task <ViewProductOption> CreateProductOption(Guid productId, CreateProductOption createProductOption) { ProductOptions productOption = _mapper.Map <ProductOptions>(createProductOption); productOption.ProductId = productId; _context.Add <ProductOptions>(productOption); await _context.SaveChangesAsync(); var createdProductOption = _mapper.Map <ViewProductOption>(productOption); return(createdProductOption); }
public void CreateProductOptionAsync_ProductNotFound_ThrowsProductNotFoundException() { // Arrange var productId = Guid.NewGuid(); var dto = new CreateProductOption() { Name = "Product Option Name 1", Description = "Product Option Description 1", }; _mockProductRepository .Setup(m => m.GetProductAsync(It.IsAny <Guid>())) .ReturnsAsync(null as Domain.Models.Product); // Assert Assert.That(() => _sut.CreateProductOptionAsync(productId, dto), Throws.Exception.TypeOf <ProductNotFoundException>()); }
public async Task CreateProductOptionAsync_IsSuccessful_ReturnsTrue() { // Arrange var productId = Guid.NewGuid(); var dto = new CreateProductOption() { Name = "Product Option Name", Description = "Product Option Description" }; var product = new Domain.Models.Product { Name = "Product Name 1", Description = "Product Description 1", Price = 100, DeliveryPrice = 2 }; var option = new ProductOption { Name = "Product Option Name 1", Description = "Product Option Description 1", }; _mockProductRepository .Setup(m => m.GetProductAsync(It.IsAny <Guid>())) .ReturnsAsync(product); _mockProductRepository .Setup(m => m.CreateProductOptionAsync(It.IsAny <ProductOption>())) .ReturnsAsync(option); // Act var result = await _sut.CreateProductOptionAsync(productId, dto); // Assert Assert.AreEqual(option.Name, result.Name); Assert.AreEqual(option.Description, result.Description); }
public async Task <ActionResult <ViewProductOption> > CreateProductOption(Guid id, CreateProductOption createProductOption) { try { var productOption = await _productOptionsService.CreateProductOption(id, createProductOption); return(Ok(productOption)); } catch (Exception ex) { _logger.LogError(ex.Message); return(StatusCode(500, new ApiResponse { Result = 1, Message = ex.Message })); } }