using ChatBot.Services; using ChatBot.Services.Telegram.Commands; using ChatBot.Tests.TestUtilities; using FluentAssertions; using Moq; namespace ChatBot.Tests.Telegram.Commands; public class ClearCommandTests : UnitTestBase { private readonly Mock _chatServiceMock; private readonly Mock _modelServiceMock; private readonly ClearCommand _clearCommand; public ClearCommandTests() { _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 ); _modelServiceMock = new Mock( TestDataBuilder.Mocks.CreateLoggerMock().Object, TestDataBuilder .Mocks.CreateOptionsMock(TestDataBuilder.Configurations.CreateOllamaSettings()) .Object ); _clearCommand = new ClearCommand(_chatServiceMock.Object, _modelServiceMock.Object); } [Fact] public async Task ExecuteAsync_ShouldClearSession_WhenSessionExists() { // Arrange var chatId = 12345L; _chatServiceMock.Setup(x => x.ClearHistoryAsync(chatId)).Returns(Task.CompletedTask); var context = new TelegramCommandContext { ChatId = chatId, Username = "testuser", MessageText = "/clear", ChatType = "private", ChatTitle = "Test Chat", }; // Act var result = await _clearCommand.ExecuteAsync(context); // Assert result.Should().NotBeNull(); result.Should().Contain("очищена"); _chatServiceMock.Verify(x => x.ClearHistoryAsync(chatId), Times.Once); } [Fact] public async Task ExecuteAsync_ShouldReturnMessage_WhenSessionDoesNotExist() { // Arrange var chatId = 12345L; _chatServiceMock .Setup(x => x.ClearHistoryAsync(chatId)) .ThrowsAsync(new InvalidOperationException("Session not found")); var context = new TelegramCommandContext { ChatId = chatId, Username = "testuser", MessageText = "/clear", ChatType = "private", ChatTitle = "Test Chat", }; // Act var result = await _clearCommand.ExecuteAsync(context); // Assert result.Should().NotBeNull(); result.Should().Contain("очищена"); _chatServiceMock.Verify(x => x.ClearHistoryAsync(chatId), Times.Once); } }