public async Task GetAllSorted_ByRecommended_ReturnAllProductSortedByRecommended(SortOptions sortOption) { //Arrange var mockAppSettings = GetMockAppSettings(); var mockUserService = GetMockUserService(); // Mock for HttpClient products Mock <HttpMessageHandler> handlerMockProduct = GetHttpMessageHandlerMock(jsonDataProducts); var httpClientProduct = new HttpClient(handlerMockProduct.Object) { BaseAddress = new Uri("http://test.com/") }; // Mock for HttpClient shopper history Mock <HttpMessageHandler> handlerMockShopperHistory = GetHttpMessageHandlerMock(jsonDataShopperHistory); var httpClientShopperHistory = new HttpClient(handlerMockShopperHistory.Object) { BaseAddress = new Uri("http://test.com/") }; //Act var shopperHistoryService = new ShopperHistoryService(httpClientShopperHistory, mockUserService.Object, mockAppSettings.Object); var productServices = new ProductService(httpClientProduct, mockUserService.Object, shopperHistoryService, mockAppSettings.Object); var products = await productServices.GetAllSorted(sortOption); //Assert Assert.AreEqual(5, products.Count); for (int i = 0; i < products.Count; i++) { if (i <= products.Count - 2) { Assert.GreaterOrEqual(products[i].Quantity, products[i + 1].Quantity); } } }
public async Task GetProducts_ShopHistoryApiError_InternalServcerError() { var product1 = new Product() { Name = "Product 3", Price = 40 }; var products = new List <Product> { product1 }; var shopperHistories = new List <ShopperHistory> { new ShopperHistory() { CustomerId = 1, Products = new Product[] { product1 } }, }; var repository = new Mock <IDataRepository>(); repository.Setup(r => r.GetProductsAsync()).Returns(Task.FromResult <IEnumerable <Product> >(products)); repository.Setup(r => r.GetShopperHistoriesAsync()).Throws(new ApiException("Error during call to ShopperHistories API")); var shopperHistoryService = new ShopperHistoryService(repository.Object); var recommendedProductsService = new RecommendedProductsService(shopperHistoryService); var productService = new ProductService(recommendedProductsService); var controller = new ProductController(repository.Object, productService); var exception = await Assert.ThrowsAsync <ApiException>(async() => await controller.GetAsync("Recommended")); Assert.Equal("Error during call to ShopperHistories API", exception.Message); }
public ProductControllerTests() { var product1 = new Product() { Name = "Product 3", Price = 40 }; var product2 = new Product() { Name = "Product 2", Price = 60 }; var product3 = new Product() { Name = "Product 1", Price = 100 }; var products = new List <Product> { product1, product2, product3 }; var shopperHistories = new List <ShopperHistory> { new ShopperHistory() { CustomerId = 1, Products = new Product[] { product1, product2, product3 } }, new ShopperHistory() { CustomerId = 2, Products = new Product[] { product2, product3 } }, new ShopperHistory() { CustomerId = 3, Products = new Product[] { product2 } } }; var repository = new Mock <IDataRepository>(); repository.Setup(r => r.GetProductsAsync()).Returns(Task.FromResult <IEnumerable <Product> >(products)); repository.Setup(r => r.GetShopperHistoriesAsync()).Returns(Task.FromResult <IEnumerable <ShopperHistory> >(shopperHistories)); var shopperHistoryService = new ShopperHistoryService(repository.Object); var recommendedProductsService = new RecommendedProductsService(shopperHistoryService); var productService = new ProductService(recommendedProductsService); Controller = new ProductController(repository.Object, productService); }
public async Task GetHistories() { Mock <ILogger <ShopperHistoryService> > loggerMock = new Mock <ILogger <ShopperHistoryService> >(); ShopperHistoryService service = new ShopperHistoryService(GetAppSettings(), loggerMock.Object); var histories = await service.GetHistoriesAsync(); Assert.NotNull(histories); }
public async Task Should_call_woolies_endpoint_to_retrieve_shopperHistory() { // Arrange var mockedHttpClient = Mock.Of <IHttpClient>(); var shopperHistoryService = new ShopperHistoryService(mockedHttpClient); var mockedResponse = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ObjectContent <List <ShopperHistory> >( _testShopperHistory, new JsonMediaTypeFormatter()) }; Mock.Get(mockedHttpClient).Setup(x => x.GetAsync("api/resource/shopperHistory")) .ReturnsAsync(mockedResponse); // Act var shopperHistoryData = (await shopperHistoryService.GetShopperHistoryAsync()).ToList(); // Assert Assert.True(_testShopperHistory.SequenceEqual(shopperHistoryData)); Mock.Get(mockedHttpClient).Verify(x => x.GetAsync("api/resource/shopperHistory"), Times.Once); }