Files
ChatBot/ChatBot.Tests/Services/Telegram/TelegramBotServiceBasicTests.cs
Leonid Pershin 40289417bd
Some checks failed
SonarQube / Build and analyze (push) Has been cancelled
add little tests
2025-10-21 04:46:44 +03:00

85 lines
2.4 KiB
C#

using ChatBot.Services.Telegram.Services;
using FluentAssertions;
using Microsoft.Extensions.Logging;
using Moq;
using Telegram.Bot;
namespace ChatBot.Tests.Services.Telegram;
/// <summary>
/// Базовые тесты для TelegramBotService
/// Полное тестирование затруднено из-за extension методов Telegram.Bot
/// </summary>
public class TelegramBotServiceBasicTests
{
[Fact]
public void Constructor_ShouldCreateInstance()
{
// Arrange
var loggerMock = new Mock<ILogger<TelegramBotService>>();
var botClientMock = new Mock<ITelegramBotClient>();
var serviceProviderMock = new Mock<IServiceProvider>();
// Act
var service = new TelegramBotService(
loggerMock.Object,
botClientMock.Object,
serviceProviderMock.Object
);
// Assert
service.Should().NotBeNull();
}
[Fact]
public async Task StopAsync_ShouldComplete()
{
// Arrange
var loggerMock = new Mock<ILogger<TelegramBotService>>();
var botClientMock = new Mock<ITelegramBotClient>();
var serviceProviderMock = new Mock<IServiceProvider>();
var service = new TelegramBotService(
loggerMock.Object,
botClientMock.Object,
serviceProviderMock.Object
);
// Act
var act = async () => await service.StopAsync(CancellationToken.None);
// Assert
await act.Should().NotThrowAsync();
}
[Fact]
public async Task StopAsync_ShouldLog()
{
// Arrange
var loggerMock = new Mock<ILogger<TelegramBotService>>();
var botClientMock = new Mock<ITelegramBotClient>();
var serviceProviderMock = new Mock<IServiceProvider>();
var service = new TelegramBotService(
loggerMock.Object,
botClientMock.Object,
serviceProviderMock.Object
);
// Act
await service.StopAsync(CancellationToken.None);
// Assert
loggerMock.Verify(
x => x.Log(
LogLevel.Information,
It.IsAny<EventId>(),
It.Is<It.IsAnyType>((v, t) => v.ToString()!.Contains("Stopping Telegram bot service")),
It.IsAny<Exception>(),
It.IsAny<Func<It.IsAnyType, Exception?, string>>()
),
Times.Once
);
}
}