Ejemplo n.º 1
0
        public async Task <ActionResult <ProductDTO> > BuyProduct(CreatorProductDTO creatorProductDTO)
        {
            if (!ModelState.IsValid)
            {
                var errorMsgModelArray = string.Join("; ", ModelState.Values
                                                     .SelectMany(x => x.Errors)
                                                     .Select(x => x.ErrorMessage));
                return(BadRequest(errorMsgModelArray));
            }

            var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            if (userId == null)
            {
                BadRequest("Invalid user");
            }

            try
            {
                return(await _paymentService.BuyProduct(Guid.Parse(userId), creatorProductDTO.TypeProduct));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task BuyProductPost_ReturnsBadRequestResult_WhenModelStateIsInvalid()
        {
            _controller.ModelState.AddModelError("TypeProduct", "Required");
            var param = new CreatorProductDTO();

            // Act
            var response = await _controller.BuyProduct(param);

            // Assert
            var actionResult = Assert.IsType <ActionResult <ProductDTO> >(response);

            Assert.IsType <BadRequestObjectResult>(actionResult.Result);
        }
        public async Task BuyProductPost_ReturnsBadRequestResult_WhenModelStateIsValid()
        {
            var param = new CreatorProductDTO {
                Availability = 10,
                Product      = new ProductDTO {
                    Name = "Coffee", Price = 10
                },
                TypeProduct = Core.Models.TypeProduct.Coffee
            };

            // Act
            var response = await _controller.BuyProduct(param);

            // Assert
            var actionResult = Assert.IsType <ActionResult <ProductDTO> >(response);
            var returnValue  = Assert.IsType <ProductDTO>(actionResult.Value);

            _mockService.Verify();
            Assert.Equal("Coffee", returnValue.Name);
            Assert.Equal(10, returnValue.Price);
        }