using System; using System.Collections.Generic; using System.Threading.Tasks; using BotSharp.Abstraction.Agents; using BotSharp.Abstraction.Conversations.Models; using BotSharp.Abstraction.MLTasks; using BotSharp.Plugin.SemanticKernel; using Microsoft.Extensions.DependencyInjection; using Microsoft.SemanticKernel; using Moq; using Xunit; using BotSharp.Abstraction.Agents.Enums; using BotSharp.Abstraction.Agents.Models; using System.Linq; using System.Runtime; using BotSharp.Abstraction.Conversations; using BotSharp.Abstraction.Models; using Microsoft.SemanticKernel.AI.ChatCompletion; using Microsoft.SemanticKernel.AI; using Microsoft.SemanticKernel.Connectors.AI.OpenAI.AzureSdk; using BotSharp.Plugin.SemanticKernel.UnitTests.Helpers; namespace BotSharp.Plugin.SemanticKernel.Tests { public class SemanticKernelChatCompletionProviderTests { private readonly Mock _kernelMock; private readonly Mock _servicesMock; private readonly Mock _tokenStatisticsMock; private readonly SemanticKernelChatCompletionProvider _provider; public SemanticKernelChatCompletionProviderTests() { _kernelMock = new Mock(); _servicesMock = new Mock(); _tokenStatisticsMock = new Mock(); _provider = new SemanticKernelChatCompletionProvider(_kernelMock.Object, _servicesMock.Object, _tokenStatisticsMock.Object); } [Fact] public 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.RenderedInstruction(agent)).Returns(""); _servicesMock.Setup(x => x.GetService(typeof(IAgentService))) .Returns(agentService.Object); var chatHistoryMock = new Mock(); var chatCompletionMock = new Mock(); chatCompletionMock.Setup(x => x.CreateNewChat(It.IsAny())).Returns(chatHistoryMock.Object); chatCompletionMock.Setup(x => x.GetChatCompletionsAsync(chatHistoryMock.Object, It.IsAny(), It.IsAny())) .ReturnsAsync(new List { new ResultHelper("How can I help you?") }); _kernelMock.Setup(x => x.GetService(null)).Returns(chatCompletionMock.Object); // Act var result = _provider.GetChatCompletions(agent, conversations); // Assert Assert.IsType(result); } } }