Exemplo n.º 1
0
        public override async Task Execute(Message message, TelegramBotClient client)
        {
            var chatId = message.Chat.Id;
            var text   = CommandsResources.NoExchangeRateFound;

            await client.SendChatActionAsync(chatId, ChatAction.Typing);

            try
            {
                var exchangeRate = service.LoadExchangeRateAsync(DateTime.Parse(message.Text)).Result.ToList();

                if (exchangeRate.Any())
                {
                    var filteredExchangeRate = await service.FilterExchangeRatesAsync(message.From.Id, exchangeRate);

                    text = ConvertExchangeRates(filteredExchangeRate);
                }

                await client.SendTextMessageAsync(chatId, text, ParseMode.Markdown);
            }
            catch (ExchangeRateNotFoundException)
            {
                await client.SendTextMessageAsync(chatId, text);
            }
        }
        public async Task FilterExchangeRatesAsync_BothFilteredAndNotFoundIsPresented_CorrectFiltering()
        {
            mockUserService.Setup(x => x.FindUserAsync(It.IsAny <int>())).ReturnsAsync(userFixture.UserWithCurrencies);

            var filtered = await service.FilterExchangeRatesAsync(userFixture.UserId, fixture.NotFilteredExchangeRates);

            mockUserService.Verify(x => x.FindUserAsync(userFixture.UserId), Times.Once);
            Assert.Collection(filtered.Filtered, item => Assert.Equal("EUR", item.Currency));
            Assert.Collection(filtered.NotFound, item => Assert.Equal(Currencies.USD, item.Currency));
        }