public async Task Handle_HappyPath_SaveStatistics() { // Arrange var sales = new List <Sale> { new Sale(Guid.NewGuid(), 1, "First agent"), new Sale(Guid.NewGuid(), 2, "Second agent"), new Sale(Guid.NewGuid(), 3, "Third agent"), new Sale(Guid.NewGuid(), 1, "First agent"), new Sale(Guid.NewGuid(), 1, "First agent"), new Sale(Guid.NewGuid(), 2, "Second agent"), new Sale(Guid.NewGuid(), 1, "First agent") }; var statistic = new SalesStatistic { Id = Guid.NewGuid(), DateCreated = DateTime.UtcNow, DateUpdated = DateTime.UtcNow, Descripiton = "Test", Criteria = new SaleStatisticCriteria { Count = 2, Filter = "filter" }, Items = new List <SaleStatisticItem>() }; _saleServiceMock .Setup(x => x.ReadSales(statistic.Criteria.Filter)) .ReturnsAsync(sales); _saleStatisticRepositoryMock .Setup(x => x.GetSaleStatistics()) .ReturnsAsync(new[] { statistic }); var command = new UpdateTopSalesStatisticsCommand(); // Act await _handler.Handle(command, CancellationToken.None); // Assert _saleStatisticRepositoryMock.Verify(x => x.GetSaleStatistics(), Times.Once); _saleStatisticRepositoryMock.Verify(x => x.UpdateSaleStatistics(statistic), Times.Once); Assert.That(statistic.Items.Count(), Is.EqualTo(2), "Top two statistics should be created"); Assert.That(statistic.Items.First().RealEstateAgent, Is.EqualTo("First agent"), "'First Agent' should in the top"); Assert.That(statistic.Items.First().SalesCount, Is.EqualTo(4), "Incorect sales count for 'First Agent'"); Assert.That(statistic.Items.ElementAt(1).RealEstateAgent, Is.EqualTo("Second agent"), "'Second Agent' should in the second position of the top"); Assert.That(statistic.Items.ElementAt(1).SalesCount, Is.EqualTo(2), "Incorect sales count for 'Second Agent'"); }
public async Task Handle_NoStatisticsInRepository_DoNothing() { // Arrange _saleStatisticRepositoryMock .Setup(x => x.GetSaleStatistics()) .ReturnsAsync(Enumerable.Empty <SalesStatistic>()); var command = new UpdateTopSalesStatisticsCommand(); // Act await _handler.Handle(command, CancellationToken.None); // Assert _saleStatisticRepositoryMock.Verify(x => x.GetSaleStatistics(), Times.Once); _saleStatisticRepositoryMock.Verify(x => x.UpdateSaleStatistics(It.IsAny <SalesStatistic>()), Times.Never); }
public async Task Handle_NoSalesForSpecifiedStatistics_SaveEmptyStatistics() { // Arrange var statistic = new SalesStatistic { Id = Guid.NewGuid(), DateCreated = DateTime.UtcNow, DateUpdated = DateTime.UtcNow, Descripiton = "Test", Criteria = new SaleStatisticCriteria { Count = 1, Filter = "filter" }, Items = new List <SaleStatisticItem> { new SaleStatisticItem() } }; _saleServiceMock .Setup(x => x.ReadSales(statistic.Criteria.Filter)) .ReturnsAsync(Enumerable.Empty <Sale>()); _saleStatisticRepositoryMock .Setup(x => x.GetSaleStatistics()) .ReturnsAsync(new[] { statistic }); var command = new UpdateTopSalesStatisticsCommand(); // Act await _handler.Handle(command, CancellationToken.None); // Assert _saleStatisticRepositoryMock.Verify(x => x.GetSaleStatistics(), Times.Once); _saleStatisticRepositoryMock.Verify(x => x.UpdateSaleStatistics(statistic), Times.Once); Assert.That(statistic.Items.Count(), Is.EqualTo(0)); }