Пример #1
0
        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();
        }
Пример #2
0
        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());
        }
Пример #3
0
        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);
        }