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); }
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); }
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); }
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); }
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(); }
public ProductController(ProductApiClient productApiClient) { _productApiClient = productApiClient; }
public ProductService(ProductApiClient client) { _client = client; }
public CartController(CartLineApiClient cartLineApiClient, ProductApiClient productApiClient) { _cartLineApiClient = cartLineApiClient; _productApiClient = productApiClient; }