using ChatBot.Services.Telegram.Services; using FluentAssertions; using Microsoft.Extensions.Logging; using Moq; using Telegram.Bot; namespace ChatBot.Tests.Services.Telegram; /// /// Базовые тесты для TelegramBotService /// Полное тестирование затруднено из-за extension методов Telegram.Bot /// public class TelegramBotServiceBasicTests { [Fact] public void Constructor_ShouldCreateInstance() { // Arrange var loggerMock = new Mock>(); var botClientMock = new Mock(); var serviceProviderMock = new Mock(); // 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>(); var botClientMock = new Mock(); var serviceProviderMock = new Mock(); 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>(); var botClientMock = new Mock(); var serviceProviderMock = new Mock(); 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(), It.Is((v, t) => v.ToString()!.Contains("Stopping Telegram bot service")), It.IsAny(), It.IsAny>() ), Times.Once ); } }