Пример #1
0
            public async Task UpdateBasket_BasketExist_ReturnsBasket(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                BasketApiClient sut,
                Basket basket
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;

                handler.When(HttpMethod.Post, $"{uri}*")
                .Respond(HttpStatusCode.OK,
                         new StringContent(
                             JsonSerializer.Serialize(basket, new JsonSerializerOptions
                {
                    Converters =
                    {
                        new JsonStringEnumConverter()
                    },
                    IgnoreReadOnlyProperties = true,
                    PropertyNamingPolicy     = JsonNamingPolicy.CamelCase
                }),
                             Encoding.UTF8,
                             "application/json"
                             )
                         );

                //Act
                var response = await sut.UpdateBasket(basket);

                //Assert
                response.BuyerId.Should().Be(basket.BuyerId);
                response.Items.Count.Should().Be(basket.Items.Count);
            }
Пример #2
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));
        }
Пример #3
0
        public async Task <BasketRemoveItemResponse> RemoveBasketItem(int basketId, int productId)
        {
            BasketApiClient          client   = new BasketApiClient(_config.APIBaseUrl);
            BasketRemoveItemResponse response =
                await client.BasketService.RemoveBasketItem(
                    basketId,
                    new BasketRemoveItemRequest()
            {
                ProductId = productId
            });

            return(response);
        }
Пример #4
0
        public async Task <BasketAddItemResponse> AddItemToBasket(int basketid, int productid, decimal price, int quantity)
        {
            BasketApiClient       client   = new BasketApiClient(_config.APIBaseUrl);
            BasketAddItemResponse response =
                await client.BasketService.AddBasketItem(
                    basketid,
                    new BasketAddItemRequest()
            {
                Price     = price,
                ProductId = productid,
                Quantity  = quantity
            });

            return(response);
        }
Пример #5
0
        public async Task <BasketUpdateResponse> UpdateBasketItem(int basketid, Dictionary <int, int> quantities)
        {
            BasketApiClient      client   = new BasketApiClient(_config.APIBaseUrl);
            BasketUpdateResponse response =
                await client.BasketService.UpdateBasketItem(
                    basketid,
                    new BasketUpdateItemsRequest()
            {
                Items = quantities.Select(q =>
                                          new BasketUpdateItem()
                {
                    ProductId = q.Key,
                    Quantity  = q.Value
                }).ToList()
            });

            return(response);
        }
Пример #6
0
        public ProductsIndexViewModel GetProductItems()
        {
            _logger.LogInformation("GetProductItems called.");

            BasketApiClient client = new BasketApiClient(_config.APIBaseUrl);
            IEnumerable <ProductModelResponse> items = client.ProductService.GetProductsAsync().Result;

            //imrovment could be to add paging
            ProductsIndexViewModel result = new ProductsIndexViewModel()
            {
                ProductItems = items.Select(i => new ProductItemViewModel()
                {
                    Id    = i.ProductId,
                    Name  = i.Name,
                    Price = i.Price
                })
            };

            return(result);
        }
Пример #7
0
            public void GetBasket_NoBasketFound_ThrowsHttpRequestException(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                BasketApiClient sut,
                string userID
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;

                handler.When(HttpMethod.Get, $"{uri}*")
                .Respond(HttpStatusCode.NotFound);

                //Act
                Func <Task> func = async() => await sut.GetBasket(userID);

                //Assert
                func.Should().Throw <HttpRequestException>()
                .WithMessage("Response status code does not indicate success: 404 (Not Found).");
            }
Пример #8
0
            public void Checkout_ReturnsAccepted(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                BasketApiClient sut,
                BasketCheckout basket
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;

                handler.When(HttpMethod.Post, $"{uri}*")
                .Respond(HttpStatusCode.Accepted);

                //Act
                async Task func() => await sut.Checkout(basket);

                //Assert
                var task = func();

                task.GetAwaiter().GetResult();
                task.IsCompleted.Should().BeTrue();
            }