public async Task GetSortedProductsQuery_SortByRecommended() { //arrange var sampleProducts = GetSampleProducts(); _mockProductsService.Setup(i => i.GetProducts()).ReturnsAsync(sampleProducts); var sampleHistory = GetSampleHistory(); _mockProductsService.Setup(i => i.GetShopperHistory()).ReturnsAsync(sampleHistory); var service = _mockProductsService.Object; var engine = new RecommendationEngine(service); var handler = new GetSortedProductsQueryHandler(service, engine); var query = new GetSortedProductsQuery(SortOrder.Recommended); //act var results = await handler.Handle(query, default(CancellationToken)); //assert _mockProductsService.Verify(i => i.GetProducts(), Times.Once, "Get Products Method should be invoked in produts service"); _mockProductsService.Verify(i => i.GetShopperHistory(), Times.Once, "Get history method should be invoked in products service"); //Assert that first item name is "Product 3" with most quantity Assert.AreEqual(results.First().Name, "Product 3", "Product with name Product 3 should be the first product"); Assert.AreEqual(results.Last().Name, "Product 1", "Product with name Product 1 should be the last product"); }
public async Task GetProducts_ShouldInvokeGetProductsQuery() { //Arrange var query = new GetSortedProductsQuery(SortOrder.High); var testProducts = GetTestProducts(); _mediator .Setup(m => m.Send(It.IsAny <GetSortedProductsQuery>(), default)).ReturnsAsync(testProducts); var mediatorObject = _mediator.Object; var controller = new ProductsController(mediatorObject); //Act var products = await controller.GetProducts(SortOrder.High); //Assert products.Should().NotBeNull(); products.Should().HaveCount(2); _mediator.Verify(i => i.Send(It.Is <GetSortedProductsQuery>(arg => arg.SortOption == SortOrder.High), It.IsAny <CancellationToken>()), Times.Once, "Should Send Get Sorted Products Query to Mediator"); }
public async Task GetSortedProductsQuery_SortByLow() { //arrange var sampleProducts = GetSampleProducts(); _mockProductsService.Setup(i => i.GetProducts()).ReturnsAsync(sampleProducts); var service = _mockProductsService.Object; var engine = _mockEngine.Object; var handler = new GetSortedProductsQueryHandler(service, engine); var query = new GetSortedProductsQuery(SortOrder.Low); //act var results = await handler.Handle(query, default(CancellationToken)); //assert _mockProductsService.Verify(i => i.GetProducts(), Times.Once, "Get Products Method should be invoked in produts service"); //Assert that first item name is "Product 1" with Lowes price Assert.AreEqual(results.First().Name, "Product 1", "Product with name Product 1 should be the first product"); }