using BotSharp.Abstraction.Agents; using BotSharp.Abstraction.Agents.Enums; using BotSharp.Abstraction.Agents.Models; using BotSharp.Abstraction.Conversations; using BotSharp.Abstraction.Conversations.Models; using BotSharp.Abstraction.Loggers; using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.ChatCompletion; using Moq; namespace BotSharp.Plugin.SemanticKernel.Tests { public class SemanticKernelChatCompletionProviderTests { private readonly Mock _chatCompletionMock; private readonly Mock _servicesMock; private readonly Mock _tokenStatisticsMock; private readonly SemanticKernelChatCompletionProvider _provider; public SemanticKernelChatCompletionProviderTests() { _chatCompletionMock = new Mock(); _servicesMock = new Mock(); _tokenStatisticsMock = new Mock(); _provider = new SemanticKernelChatCompletionProvider(_chatCompletionMock.Object, _servicesMock.Object, _tokenStatisticsMock.Object); } [Fact] public async void GetChatCompletions_Returns_RoleDialogModel() { // Arrange var agent = new Agent(); var conversations = new List { new RoleDialogModel(AgentRole.User, "Hello") }; _servicesMock.Setup(x => x.GetService(typeof(IEnumerable))) .Returns(new List()); var agentService = new Mock(); agentService.Setup(x => x.RenderInstruction(agent, null)).Returns("How can I help you?"); _servicesMock.Setup(x => x.GetService(typeof(IAgentService))) .Returns(agentService.Object); var chatHistoryMock = new Mock(); //_chatCompletionMock.Setup(x => new ChatHistory(It.IsAny())).Returns(chatHistoryMock.Object); _chatCompletionMock.Setup(x => x.GetChatMessageContentsAsync(chatHistoryMock.Object, It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(new List { new ChatMessageContent(AuthorRole.Assistant,"How can I help you?") }); // Act var result = await _provider.GetChatCompletions(agent, conversations); // Assert Assert.IsType(result); } } }