Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }