コード例 #1
0
        public async Task AddItemToBasket_OutOfStockItem_ReturnFalse(AddBasketRequest basketRequest)
        {
            //arrange
            _mockDummyStockProvider.Setup(x => x.IsInStock(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>()))
            .Returns((int productId, string color, int quantity) =>
            {
                if (productId == 9 && color == "Cyan" && quantity < 10)
                {
                    return(Task.FromResult(true));
                }

                return(Task.FromResult(false));
            }
                     );

            var basketService = new BasketService(_mockBasketRepository.Object, _mockDummyStockProvider.Object);

            //act
            var result = await basketService.AddBasketsAsync(basketRequest);

            //assert
            Assert.False(result.IsSuccess);
            _mockBasketRepository.Verify(x => x.AddBasketsAsync(It.IsAny <BasketItem>()), Times.Once);
            _mockDummyStockProvider.Verify(x => x.IsInStock(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>()), Times.Once);
        }
コード例 #2
0
        public async Task <AddBasketResponse> AddBasketsAsync(AddBasketRequest request)
        {
            var response = new AddBasketResponse();

            var isInStock = await _dummyStockProvider.IsInStock(request.ProductId, request.Color, request.Quantity);

            if (!isInStock)
            {
                response.StatusCode = (int)HttpStatusCode.NotFound;
                return(response);
            }

            BasketItem entity = new BasketItem()
            {
                UserName    = request.UserName,
                Quantity    = request.Quantity,
                Color       = request.Color,
                Price       = request.Price,
                ProductId   = request.ProductId,
                ProductName = request.ProductName
            };

            bool status = await _basketService.AddBasketsAsync(entity);

            if (status)
            {
                response.StatusCode = (int)HttpStatusCode.Created;
            }
            else
            {
                response.StatusCode = (int)HttpStatusCode.BadRequest;
            }

            return(response);
        }
コード例 #3
0
        public async Task AddItemToBasket_InvalidBasket_InvalidBasketItemException(AddBasketRequest basketRequest)
        {
            //arrange
            _mockDummyStockProvider.Setup(x => x.IsInStock(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>())).ReturnsAsync(true);
            var basketService = new BasketService(_mockBasketRepository.Object, _mockDummyStockProvider.Object);

            //act & assert
            await Assert.ThrowsAsync <InvalidBasketItemModelException>(() => basketService.AddBasketsAsync(basketRequest));

            _mockDummyStockProvider.Verify(x => x.IsInStock(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>()), Times.Never);
            _mockBasketRepository.Verify(x => x.AddBasketsAsync(It.IsAny <BasketItem>()), Times.Never);
        }
コード例 #4
0
        public async Task AddBasketItem_Success_ReturnTrue(AddBasketRequest basketRequest)
        {
            //arrange
            _mockBasketRepository.Setup(x => x.AddBasketsAsync(It.IsAny <BasketItem>())).ReturnsAsync(true);
            _mockDummyStockProvider.Setup(x => x.IsInStock(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>())).ReturnsAsync(true);
            var basketService = new BasketService(_mockBasketRepository.Object, _mockDummyStockProvider.Object);

            //act
            var result = await basketService.AddBasketsAsync(basketRequest);

            //assert
            Assert.True(result.IsSuccess);
            _mockBasketRepository.Verify(x => x.AddBasketsAsync(It.IsAny <BasketItem>()), Times.Once);
            _mockDummyStockProvider.Verify(x => x.IsInStock(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <int>()), Times.Once);
        }
コード例 #5
0
        public async Task <IActionResult> AddBasket([FromBody] AddBasketRequest request)
        {
            var response = await _service.AddBasketsAsync(request);

            return(StatusCode(response.StatusCode, response));
        }