This commit is contained in:
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user