Esempio n. 1
0
        public async void BasketItemIsAddedWhenOtherProductIsAddedToBasket()
        {
            string userId = Guid.NewGuid().ToString();
            BasketModelResponse response = await client.BasketService.GetBasketForUser(userId);

            BasketAddItemResponse resp = await client.BasketService.AddBasketItem(response.BasketId, new BasketAddItemRequest()
            {
                Price     = 10.50M,
                ProductId = 1,
                Quantity  = 2
            });

            resp = await client.BasketService.AddBasketItem(response.BasketId, new BasketAddItemRequest()
            {
                Price     = 20.00M,
                ProductId = 3,
                Quantity  = 1
            });

            resp.Should().NotBeNull();
            resp.Success.Should().Be(true);

            response = await client.BasketService.GetBasketForUser(userId);

            List <BasketModelItem> items = response.Items.ToList();

            items.Count.Should().Be(2);
        }
Esempio n. 2
0
        public async void BasketIsCreatedAndRetrievedForUser()
        {
            string userId = Guid.NewGuid().ToString();
            BasketModelResponse response = await client.BasketService.GetBasketForUser(userId);

            response.Should().NotBeNull();
            response.BasketId.Should().BeGreaterThan(0);
        }
Esempio n. 3
0
        public async Task <BasketIndexViewModel> GetOrCreateBasketForUser(string userId)
        {
            _logger.LogInformation("GetOrCreateBasketForUser called.");

            BasketApiClient     client = new BasketApiClient(_config.APIBaseUrl);
            BasketModelResponse basket = await client.BasketService.GetBasketForUser(userId);

            return(GetViewModelFromBasket(basket));
        }
Esempio n. 4
0
        public async Task <BasketModelResponse> GetForUser(string userid)
        {
            Basket b = await _basketService.GetOrCreateBasketForUser(userid);

            //query the product items to add extra product details to the response
            int[] productIds = b.Items.Select(item => item.ProductItemId).ToArray();
            IEnumerable <ProductItem> productItems =
                await _productsService.ListAsync(p => productIds.Contains(p.Id));

            b.UserId = userid;
            BasketModelResponse response = b.ToBasketModelResponse(productItems);

            return(response);
        }
Esempio n. 5
0
        private BasketIndexViewModel GetViewModelFromBasket(BasketModelResponse basket)
        {
            BasketIndexViewModel model = new BasketIndexViewModel();

            model.Id          = basket.BasketId;
            model.UserId      = basket.UserId;
            model.BasketItems = basket.Items.Select(i =>
            {
                BasketItemViewModel itemModel = new BasketItemViewModel()
                {
                    UnitPrice     = i.Price,
                    Quantity      = i.Quantity,
                    ProductItemId = i.ProductId,
                    ProductName   = i.ProductName
                };

                return(itemModel);
            }).ToList();

            return(model);
        }
Esempio n. 6
0
        public async void BasketItemIsUpdated()
        {
            string userId = Guid.NewGuid().ToString();
            BasketModelResponse response = await client.BasketService.GetBasketForUser(userId);

            BasketAddItemResponse respAdd = await client.BasketService.AddBasketItem(response.BasketId, new BasketAddItemRequest()
            {
                Price     = 10.50M,
                ProductId = 1,
                Quantity  = 2
            });

            respAdd.Should().NotBeNull();
            respAdd.Success.Should().Be(true);

            List <BasketUpdateItem> updateItems = new List <BasketUpdateItem>();

            updateItems.Add(new BasketUpdateItem()
            {
                ProductId = 1, Quantity = 1
            });
            BasketUpdateResponse respUpd = await client.BasketService.UpdateBasketItem(
                response.BasketId,
                new BasketUpdateItemsRequest()
            {
                Items = updateItems
            });

            respUpd.Should().NotBeNull();
            respUpd.Success.Should().Be(true);

            response = await client.BasketService.GetBasketForUser(userId);

            List <BasketModelItem> items = response.Items.ToList();

            items.Count.Should().Be(1);
            items.First().Quantity.Should().Be(1);
        }