Add more tests
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
using Telegram.Bot.Types;
|
||||
|
||||
namespace ChatBot.Services.Telegram.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Wrapper interface for Telegram Bot Client SendMessage functionality to enable mocking
|
||||
/// </summary>
|
||||
public interface ITelegramMessageSenderWrapper
|
||||
{
|
||||
/// <summary>
|
||||
/// Sends a message to a chat
|
||||
/// </summary>
|
||||
Task<Message> SendMessageAsync(
|
||||
long chatId,
|
||||
string text,
|
||||
int replyToMessageId,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -10,10 +10,15 @@ namespace ChatBot.Services.Telegram.Services
|
||||
public class TelegramMessageSender : ITelegramMessageSender
|
||||
{
|
||||
private readonly ILogger<TelegramMessageSender> _logger;
|
||||
private readonly ITelegramMessageSenderWrapper _messageSenderWrapper;
|
||||
|
||||
public TelegramMessageSender(ILogger<TelegramMessageSender> logger)
|
||||
public TelegramMessageSender(
|
||||
ILogger<TelegramMessageSender> logger,
|
||||
ITelegramMessageSenderWrapper messageSenderWrapper
|
||||
)
|
||||
{
|
||||
_logger = logger;
|
||||
_messageSenderWrapper = messageSenderWrapper;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -28,14 +33,20 @@ namespace ChatBot.Services.Telegram.Services
|
||||
int maxRetries = 3
|
||||
)
|
||||
{
|
||||
// Ensure maxRetries is at least 1
|
||||
if (maxRetries < 1)
|
||||
{
|
||||
maxRetries = 3;
|
||||
}
|
||||
|
||||
for (int attempt = 1; attempt <= maxRetries; attempt++)
|
||||
{
|
||||
try
|
||||
{
|
||||
await botClient.SendMessage(
|
||||
await _messageSenderWrapper.SendMessageAsync(
|
||||
chatId: chatId,
|
||||
text: text,
|
||||
replyParameters: replyToMessageId,
|
||||
replyToMessageId: replyToMessageId,
|
||||
cancellationToken: cancellationToken
|
||||
);
|
||||
return; // Success, exit the method
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
using ChatBot.Services.Telegram.Interfaces;
|
||||
using Telegram.Bot;
|
||||
using Telegram.Bot.Types;
|
||||
|
||||
namespace ChatBot.Services.Telegram.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Wrapper implementation for Telegram Bot Client SendMessage functionality
|
||||
/// </summary>
|
||||
public class TelegramMessageSenderWrapper : ITelegramMessageSenderWrapper
|
||||
{
|
||||
private readonly ITelegramBotClient _botClient;
|
||||
|
||||
public TelegramMessageSenderWrapper(ITelegramBotClient botClient)
|
||||
{
|
||||
_botClient = botClient;
|
||||
}
|
||||
|
||||
public async Task<Message> SendMessageAsync(
|
||||
long chatId,
|
||||
string text,
|
||||
int replyToMessageId,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
return await _botClient.SendMessage(
|
||||
chatId: chatId,
|
||||
text: text,
|
||||
replyParameters: replyToMessageId,
|
||||
cancellationToken: cancellationToken
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user