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( TestDataBuilder.Mocks.CreateLoggerMock().Object, TestDataBuilder.Mocks.CreateAIServiceMock().Object, TestDataBuilder.Mocks.CreateSessionStorageMock().Object, TestDataBuilder .Mocks.CreateOptionsMock(TestDataBuilder.Configurations.CreateAISettings()) .Object, TestDataBuilder.Mocks.CreateCompressionServiceMock().Object ); var modelServiceMock = new Mock( TestDataBuilder.Mocks.CreateLoggerMock().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("вопросы"); } }