BotSharp/tests/BotSharp.Plugin.SemanticKernel.UnitTests/SemanticKernelChatCompletionProviderTests.cs

64 lines
2.5 KiB
C#
Raw Normal View History

2023-11-12 14:04:00 +00:00
using BotSharp.Abstraction.Agents;
using BotSharp.Abstraction.Conversations.Models;
using Moq;
using BotSharp.Abstraction.Agents.Enums;
using BotSharp.Abstraction.Agents.Models;
using BotSharp.Abstraction.Conversations;
using Microsoft.SemanticKernel.AI.ChatCompletion;
using Microsoft.SemanticKernel.AI;
2023-11-13 15:11:49 +00:00
using BotSharp.Plugin.SemanticKernel.UnitTests.Helpers;
2023-11-29 23:23:14 +00:00
using BotSharp.Abstraction.Loggers;
2023-11-12 14:04:00 +00:00
namespace BotSharp.Plugin.SemanticKernel.Tests
{
public class SemanticKernelChatCompletionProviderTests
{
2023-11-29 23:23:14 +00:00
private readonly Mock<IChatCompletion> _chatCompletionMock;
2023-11-12 14:04:00 +00:00
private readonly Mock<IServiceProvider> _servicesMock;
private readonly Mock<ITokenStatistics> _tokenStatisticsMock;
private readonly SemanticKernelChatCompletionProvider _provider;
public SemanticKernelChatCompletionProviderTests()
{
2023-11-29 23:23:14 +00:00
_chatCompletionMock = new Mock<IChatCompletion>();
2023-11-12 14:04:00 +00:00
_servicesMock = new Mock<IServiceProvider>();
_tokenStatisticsMock = new Mock<ITokenStatistics>();
2023-11-20 13:20:10 +00:00
_provider = new SemanticKernelChatCompletionProvider(_chatCompletionMock.Object, _servicesMock.Object, _tokenStatisticsMock.Object);
2023-11-12 14:04:00 +00:00
}
[Fact]
public void GetChatCompletions_Returns_RoleDialogModel()
{
// Arrange
var agent = new Agent();
var conversations = new List<RoleDialogModel>
{
new RoleDialogModel(AgentRole.User, "Hello")
};
2023-11-13 15:11:49 +00:00
_servicesMock.Setup(x => x.GetService(typeof(IEnumerable<IContentGeneratingHook>)))
.Returns(new List<IContentGeneratingHook>());
var agentService = new Mock<IAgentService>();
agentService.Setup(x => x.RenderedInstruction(agent)).Returns("");
_servicesMock.Setup(x => x.GetService(typeof(IAgentService)))
.Returns(agentService.Object);
2023-11-12 14:04:00 +00:00
var chatHistoryMock = new Mock<ChatHistory>();
2023-11-20 13:20:10 +00:00
_chatCompletionMock.Setup(x => x.CreateNewChat(It.IsAny<string>())).Returns(chatHistoryMock.Object);
_chatCompletionMock.Setup(x => x.GetChatCompletionsAsync(chatHistoryMock.Object, It.IsAny<AIRequestSettings>(), It.IsAny<CancellationToken>()))
2023-11-12 14:04:00 +00:00
.ReturnsAsync(new List<IChatResult>
{
2023-11-13 15:11:49 +00:00
new ResultHelper("How can I help you?")
2023-11-12 14:04:00 +00:00
});
// Act
var result = _provider.GetChatCompletions(agent, conversations);
// Assert
Assert.IsType<RoleDialogModel>(result);
}
}
2023-11-13 15:11:49 +00:00
2023-11-12 14:04:00 +00:00
}