Files
ChatBot/ChatBot.Tests/Telegram/Commands/SettingsCommandTests.cs
Leonid Pershin 1996fec14f
All checks were successful
SonarQube / Build and analyze (push) Successful in 2m54s
Add promt fix tests
2025-10-21 12:07:56 +03:00

94 lines
3.0 KiB
C#

using ChatBot.Models.Configuration;
using ChatBot.Services;
using ChatBot.Services.Interfaces;
using ChatBot.Services.Telegram.Commands;
using ChatBot.Tests.TestUtilities;
using FluentAssertions;
using Moq;
namespace ChatBot.Tests.Telegram.Commands;
public class SettingsCommandTests : UnitTestBase
{
private readonly Mock<ChatService> _chatServiceMock;
private readonly SettingsCommand _settingsCommand;
public SettingsCommandTests()
{
_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 aiSettingsMock = TestDataBuilder.Mocks.CreateOptionsMock(new AISettings());
_settingsCommand = new SettingsCommand(
_chatServiceMock.Object,
modelServiceMock.Object,
aiSettingsMock.Object
);
}
[Fact]
public async Task ExecuteAsync_ShouldReturnSettings_WhenSessionExists()
{
// Arrange
var chatId = 12345L;
var session = TestDataBuilder.ChatSessions.CreateBasicSession(chatId);
_chatServiceMock.Setup(x => x.GetSessionAsync(chatId)).ReturnsAsync(session);
var context = new TelegramCommandContext
{
ChatId = chatId,
Username = "testuser",
MessageText = "/settings",
ChatType = "private",
ChatTitle = "Test Chat",
};
// Act
var result = await _settingsCommand.ExecuteAsync(context);
// Assert
result.Should().NotBeNull();
result.Should().Contain("Настройки");
result.Should().Contain("Модель");
}
[Fact]
public async Task ExecuteAsync_ShouldReturnDefaultSettings_WhenSessionDoesNotExist()
{
// Arrange
var chatId = 12345L;
_chatServiceMock
.Setup(x => x.GetSessionAsync(chatId))
.ReturnsAsync((ChatBot.Models.ChatSession?)null);
var context = new TelegramCommandContext
{
ChatId = chatId,
Username = "testuser",
MessageText = "/settings",
ChatType = "private",
ChatTitle = "Test Chat",
};
// Act
var result = await _settingsCommand.ExecuteAsync(context);
// Assert
result.Should().NotBeNull();
result.Should().Contain("Сессия");
result.Should().Contain("найдена");
}
}