public async Task Items_over_batch_size_should_have_ondemand_status() { // arrange const long chatId = long.MaxValue; var items = new Fixture().CreateMany <FeedItem>(3).ToList(); items.ForEach(x => x.Status = FeedItemStatus.Pending); items.ForEach(x => x.Subscription.ApplicationUser.TelegramChatId = chatId); // same chat for all db.FeedItems.AddRange(items); db.SaveChanges(); // act var service = new SenderService(settings, serviceContext, telegram); await service.SendPendingsAsync(ct); // assert var sentItems = db.FeedItems.Where(x => x.Status == FeedItemStatus.Sent); sentItems.Count().Should().Be(1); var onDemandItems = db.FeedItems.Where(x => x.Status == FeedItemStatus.OnDemand); onDemandItems.Count().Should().Be(2); telegram.Received().SendOnDemandCounterAsync(chatId, 2).Wait(); }
public async Task Pending_items_should_be_sent() { // arrange var items = new Fixture().CreateMany <FeedItem>(3).ToList(); items.ForEach(x => x.Status = FeedItemStatus.Pending); db.FeedItems.AddRange(items); db.SaveChanges(); // act var service = new SenderService(settings, serviceContext, telegram); await service.SendPendingsAsync(ct); // assert db.FeedItems.All(x => x.Status == FeedItemStatus.Sent).Should().BeTrue(); items.ForEach(item => telegram.Received().SendMessageAsync(ChatId(item), item.Link).Wait()); }
public async Task Error_must_be_saved() { // arrange var item = new Fixture().Create <FeedItem>(); item.Status = FeedItemStatus.Pending; db.FeedItems.Add(item); db.SaveChanges(); telegram .SendMessageAsync(item.Subscription.ApplicationUser.TelegramChatId, item.Link) .Throws(new Exception()); // act var service = new SenderService(settings, serviceContext, telegram); await service.SendPendingsAsync(ct); // assert db.FeedItems.Count(x => x.Status == FeedItemStatus.Error).Should().Be(1); db.ItemErrors.Count().Should().Be(1); }