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,78 @@
using ChatBot.Models.Configuration;
using ChatBot.Services;
using ChatBot.Services.Telegram.Commands;
using ChatBot.Tests.TestUtilities;
using FluentAssertions;
using Microsoft.Extensions.Logging;
using Moq;
using Telegram.Bot.Types;
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("вопросы");
}
}