Esempio n. 1
0
            public async Task GetCategories_CategoriesFound_ReturnsCategories(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                List <ProductCategory> categories,
                ProductApiClient sut
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;

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

                //Act
                var response = await sut.GetCategoriesAsync();

                //Assert
                response.Should().BeEquivalentTo(categories);
            }
Esempio n. 2
0
            public async Task GetProduct_ProductFound_ReturnsProduct(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                Product product,
                ProductApiClient sut
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;
                handler.When(HttpMethod.Get, $"{uri}*")
                .Respond(HttpStatusCode.OK,
                         new StringContent(
                             JsonSerializer.Serialize(product, new JsonSerializerOptions
                {
                    Converters =
                    {
                        new JsonStringEnumConverter()
                    },
                    IgnoreReadOnlyProperties = true,
                    PropertyNamingPolicy     = JsonNamingPolicy.CamelCase
                })
                             )
                         );

                //Act
                var response = await sut.GetProductAsync(product.ProductNumber);

                //Assert
                response.Should().NotBeNull();
                response.Should().BeEquivalentTo(product);
            }
Esempio n. 3
0
        public void Setup()
        {
            _httpMessageHandlerMock = new MockHttpMessageHandler();

            var productApiConfigurationMock = new Mock <IProductApiConfiguration>();

            productApiConfigurationMock.SetupGet(productApiConfiguration => productApiConfiguration.BaseAddress).Returns("http://foo");

            var httpClientFactoryMock = new Mock <IHttpClientFactory>();

            httpClientFactoryMock.Setup(factory => factory.CreateClient(It.IsAny <string>())).Returns(_httpMessageHandlerMock.ToHttpClient());

            _sut = new ProductApiClient(httpClientFactoryMock.Object, productApiConfigurationMock.Object);
        }
Esempio n. 4
0
            public async Task GetProducts_ProductsFound_ReturnsProducts(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                List <Product> list,
                ProductApiClient sut,
                string category,
                string subCategory,
                string orderBy
                )
            {
                //Arrange
                var products = new GetProductsResult
                {
                    Products      = list,
                    TotalProducts = list.Count
                };

                httpClient.BaseAddress = uri;
                handler.When(HttpMethod.Get, $"{uri}*")
                .Respond(HttpStatusCode.OK,
                         new StringContent(
                             JsonSerializer.Serialize(products, new JsonSerializerOptions
                {
                    Converters =
                    {
                        new JsonStringEnumConverter()
                    },
                    IgnoreReadOnlyProperties = true,
                    PropertyNamingPolicy     = JsonNamingPolicy.CamelCase
                })
                             )
                         );

                //Act
                var response = await sut.GetProductsAsync(0, 10, category, subCategory, orderBy);

                //Assert
                response.Should().NotBeNull();
                response.TotalProducts.Should().Be(list.Count);
                response.Products.Should().BeEquivalentTo(list);
            }
Esempio n. 5
0
            public void GetProducts_NoProductsFound_ThrowsHttpRequestException(
                [Frozen] MockHttpMessageHandler handler,
                [Frozen] HttpClient httpClient,
                Uri uri,
                ProductApiClient sut
                )
            {
                //Arrange
                httpClient.BaseAddress = uri;

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

                //Act
                Func <Task> func = async() => await sut.GetProductsAsync(0, 10, null, null, null);

                //Assert
                func.Should().Throw <HttpRequestException>()
                .WithMessage("Response status code does not indicate success: 404 (Not Found).");
            }
        public void WhenApiIsUp_ReturnsTrue()
        {
            //Arrange
            _mockProviderService.UponReceiving("a request to check the api status")
            .With(new ProviderServiceRequest
            {
                Method  = HttpVerb.Get,
                Headers = new Dictionary <string, object> {
                    { "Accept", "application/json" }
                },
                Path = "/echo/status"
            })
            .WillRespondWith(new ProviderServiceResponse
            {
                Status  = 200,
                Headers = new Dictionary <string, object> {
                    { "Content-Type", "application/json; charset=utf-8" }
                },
                Body = new
                {
                    up      = true,
                    upSince = DateTime.UtcNow,
                    version = "2.0.0",
                    message = "I'm up and running from last 19 hours."
                }
            });

            var consumer = new ProductApiClient(_serviceBaseUri);

            //Act
            var result = consumer.ApiStatus().Up;

            //Assert
            Assert.True(result);

            _mockProviderService.VerifyInteractions();
        }
        public void GetProductList()
        {
            //Arrange
            _mockProviderService.UponReceiving("a request to get list of first five product items.")
            .With(new ProviderServiceRequest
            {
                Method  = HttpVerb.Get,
                Headers = new Dictionary <string, object> {
                    { "Accept", "application/json" }
                },
                Path = "/product/productlist"
            })
            .WillRespondWith(new ProviderServiceResponse
            {
                Status  = 200,
                Headers = new Dictionary <string, object> {
                    { "Content-Type", "application/json; charset=utf-8" }
                },
                Body = new[]
                {
                    new
                    {
                        id          = "430c659d-0065-4abc-8bc3-9c5b30ecd717",
                        name        = "Product-1",
                        description = "1 Product description.",
                        image       = "",
                        price       = 0
                    },
                    new
                    {
                        id          = "c6502d76-83fd-44d5-b84d-987d28933f0a",
                        name        = "Product-2",
                        description = "2 Product description.",
                        image       = "",
                        price       = 0
                    },
                    new
                    {
                        id          = "932cc010-7838-4d8e-945d-41d3a08b58c0",
                        name        = "Product-3",
                        description = "3 Product description.",
                        image       = "",
                        price       = 0
                    },
                    new
                    {
                        id          = "a37fc4c3-a053-4229-81a7-44ac5db00530",
                        name        = "Product-4",
                        description = "4 Product description.",
                        image       = "",
                        price       = 0
                    },
                    new
                    {
                        id          = "e0d30816-5362-41c5-9f9a-2c1bf3c12d10",
                        name        = "Product-5",
                        description = "5 Product description.",
                        image       = "",
                        price       = 100
                    }
                }
            });

            var consumer = new ProductApiClient(_serviceBaseUri);

            //Act
            var result = consumer.GetProducts();

            //Assert
            Assert.True(result.Any());


            _mockProviderService.VerifyInteractions();
        }
Esempio n. 8
0
 public ProductController(ProductApiClient productApiClient)
 {
     _productApiClient = productApiClient;
 }
Esempio n. 9
0
 public ProductService(ProductApiClient client)
 {
     _client = client;
 }
Esempio n. 10
0
 public CartController(CartLineApiClient cartLineApiClient, ProductApiClient productApiClient)
 {
     _cartLineApiClient = cartLineApiClient;
     _productApiClient  = productApiClient;
 }