add little tests
Some checks failed
SonarQube / Build and analyze (push) Has been cancelled

This commit is contained in:
Leonid Pershin
2025-10-21 04:46:44 +03:00
parent 6d62c82947
commit 40289417bd
2 changed files with 238 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
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
);
}
}