Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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)));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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>());
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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
                }));
            }
        }