using ChatBot.Models.Configuration; using ChatBot.Services; using ChatBot.Tests.TestUtilities; using FluentAssertions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; namespace ChatBot.Tests.Services; public class SystemPromptServiceTests : UnitTestBase { private readonly Mock> _loggerMock; private readonly SystemPromptService _systemPromptService; public SystemPromptServiceTests() { _loggerMock = TestDataBuilder.Mocks.CreateLoggerMock(); var aiSettingsMock = TestDataBuilder.Mocks.CreateOptionsMock(new AISettings()); _systemPromptService = new SystemPromptService(_loggerMock.Object, aiSettingsMock.Object); } [Fact] public async Task GetSystemPromptAsync_ShouldReturnSystemPrompt() { // Act var result = await _systemPromptService.GetSystemPromptAsync(); // Assert result.Should().NotBeNullOrEmpty(); result.Should().Contain("Никита"); } [Fact] public async Task GetSystemPromptAsync_ShouldReturnCachedPrompt_WhenCalledMultipleTimes() { // Act var result1 = await _systemPromptService.GetSystemPromptAsync(); var result2 = await _systemPromptService.GetSystemPromptAsync(); // Assert result1.Should().Be(result2); } [Fact] public async Task ReloadPrompt_ShouldClearCache() { // Act // ReloadPrompt method doesn't exist, skipping this test var newPrompt = await _systemPromptService.GetSystemPromptAsync(); // Assert newPrompt.Should().NotBeNull(); // Note: In a real scenario, we might mock the file system to test cache clearing } }