add tests

This commit is contained in:
Leonid Pershin
2025-10-17 05:47:18 +03:00
parent f7e3024e7e
commit 03eb0f22a2
41 changed files with 4001 additions and 30 deletions

View File

@@ -0,0 +1,108 @@
using ChatBot.Models.Configuration;
using ChatBot.Services;
using ChatBot.Services.Telegram.Commands;
using ChatBot.Services.Telegram.Interfaces;
using ChatBot.Tests.TestUtilities;
using FluentAssertions;
using Microsoft.Extensions.Logging;
using Moq;
using Telegram.Bot.Types;
namespace ChatBot.Tests.Telegram.Commands;
public class HelpCommandTests : UnitTestBase
{
private readonly HelpCommand _helpCommand;
public HelpCommandTests()
{
var chatServiceMock = new Mock<ChatService>(
TestDataBuilder.Mocks.CreateLoggerMock<ChatService>().Object,
TestDataBuilder.Mocks.CreateAIServiceMock().Object,
TestDataBuilder.Mocks.CreateSessionStorageMock().Object,
TestDataBuilder
.Mocks.CreateOptionsMock(TestDataBuilder.Configurations.CreateAISettings())
.Object,
TestDataBuilder.Mocks.CreateCompressionServiceMock().Object
);
var modelServiceMock = new Mock<ModelService>(
TestDataBuilder.Mocks.CreateLoggerMock<ModelService>().Object,
TestDataBuilder
.Mocks.CreateOptionsMock(TestDataBuilder.Configurations.CreateOllamaSettings())
.Object
);
var commandRegistryMock = new Mock<CommandRegistry>(
Mock.Of<ILogger<CommandRegistry>>(),
new List<ITelegramCommand>()
);
commandRegistryMock
.Setup(x => x.GetCommandsWithDescriptions())
.Returns(
new List<(string, string)>
{
("/start", "Начать работу с ботом"),
("/help", "Показать справку по всем командам"),
("/clear", "Очистить историю чата"),
("/settings", "Показать настройки чата"),
("/status", "Показать статус системы и API"),
}
);
var serviceProviderMock = new Mock<IServiceProvider>();
serviceProviderMock
.Setup(x => x.GetService(typeof(CommandRegistry)))
.Returns(commandRegistryMock.Object);
_helpCommand = new HelpCommand(
chatServiceMock.Object,
modelServiceMock.Object,
serviceProviderMock.Object
);
}
[Fact]
public async Task ExecuteAsync_ShouldReturnHelpMessage()
{
// Arrange
var context = new TelegramCommandContext
{
ChatId = 12345,
Username = "testuser",
MessageText = "/help",
ChatType = "private",
ChatTitle = "Test Chat",
};
// Act
var result = await _helpCommand.ExecuteAsync(context);
// Assert
result.Should().NotBeNull();
result.Should().Contain("Доступные");
result.Should().Contain("/start");
result.Should().Contain("/help");
}
[Fact]
public async Task ExecuteAsync_ShouldReturnCommandList()
{
// Arrange
var context = new TelegramCommandContext
{
ChatId = 12345,
Username = "testuser",
MessageText = "/help",
ChatType = "private",
ChatTitle = "Test Chat",
};
// Act
var result = await _helpCommand.ExecuteAsync(context);
// Assert
result.Should().NotBeNull();
result.Should().Contain("/status");
result.Should().Contain("/clear");
result.Should().Contain("/settings");
}
}