85 lines
2.4 KiB
C#
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
|
|
);
|
|
}
|
|
}
|