Пример #1
0
        public async Task <IActionResult> AddItemToBasket(BasketItemCreateViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid model"));
            }

            BasketViewModel basket = await _basketViewModelService.GetOrCreateBasketForUserAsync(User.Identity.Name);

            var priceResult = Pounds.Create(model.PriceInPounds);

            if (priceResult.IsFailure)
            {
                return(BadRequest(priceResult.Error));
            }

            var result = await _basketService.AddItemToBasketAsync(basket.Id, model.ProductId, model.Quantity, priceResult.Value);

            if (result.IsFailure)
            {
                return(NotFound(result.Error));
            }

            BasketItemViewModel item = await _basketViewModelService.GetBasketItemForUserAsync(User.Identity.Name, result.Value);

            return(CreatedAtAction("GetItem", new { id = item.Id }, item));
        }
Пример #2
0
        public void Create_WithNegativeAmount_ShouldReturnFailure()
        {
            // Arrange
            var result = Pounds.Create(-1);

            // Assert
            Assert.True(result.IsFailure);
        }
Пример #3
0
        public void Create_WithValidAmount_ShouldReturnSuccess()
        {
            // Arrange
            var result = Pounds.Create(1);

            // Assert
            Assert.True(result.IsSuccess);
        }
Пример #4
0
        public void Create_WithPartOfPennyAmount_ShouldReturnFailure()
        {
            // Arrange
            var result = Pounds.Create(0.001m);

            // Assert
            Assert.True(result.IsFailure);
        }
Пример #5
0
        public void Create_WithBigAmount_ShouldReturnFailure()
        {
            // Arrange
            var result = Pounds.Create(Pounds.MaxPoundAmount + 1);

            // Assert
            Assert.True(result.IsFailure);
        }