Files
ChatBot/ChatBot.Tests/Telegram/Commands/StartCommandTests.cs
Leonid Pershin b816eb5aaf clear deps
2025-10-17 06:29:23 +03:00

76 lines
2.3 KiB
C#

using ChatBot.Services;
using ChatBot.Services.Telegram.Commands;
using ChatBot.Tests.TestUtilities;
using FluentAssertions;
using Moq;
namespace ChatBot.Tests.Telegram.Commands;
public class StartCommandTests : UnitTestBase
{
private readonly StartCommand _startCommand;
public StartCommandTests()
{
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
);
_startCommand = new StartCommand(chatServiceMock.Object, modelServiceMock.Object);
}
[Fact]
public async Task ExecuteAsync_ShouldReturnWelcomeMessage()
{
// Arrange
var context = new TelegramCommandContext
{
ChatId = 12345,
Username = "testuser",
MessageText = "/start",
ChatType = "private",
ChatTitle = "Test Chat",
};
// Act
var result = await _startCommand.ExecuteAsync(context);
// Assert
result.Should().NotBeNull();
result.Should().Contain("Привет");
result.Should().Contain("Никита");
}
[Fact]
public async Task ExecuteAsync_ShouldReturnHelpInformation()
{
// Arrange
var context = new TelegramCommandContext
{
ChatId = 12345,
Username = "testuser",
MessageText = "/start",
ChatType = "private",
ChatTitle = "Test Chat",
};
// Act
var result = await _startCommand.ExecuteAsync(context);
// Assert
result.Should().NotBeNull();
result.Should().Contain("вопросы");
}
}