2024-12-13 04:44:26 +00:00
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using BotSharp.Abstraction.Conversations;
|
2025-05-16 04:21:01 +00:00
|
|
|
using BotSharp.Abstraction.Hooks;
|
2024-12-13 04:44:26 +00:00
|
|
|
|
|
|
|
|
namespace UnitTest
|
|
|
|
|
{
|
|
|
|
|
[TestClass]
|
|
|
|
|
public class MainTest
|
|
|
|
|
{
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void TestConversationHookProvider()
|
|
|
|
|
{
|
|
|
|
|
var services = new ServiceCollection();
|
|
|
|
|
|
2024-12-14 16:35:37 +00:00
|
|
|
services.AddSingleton<IConversationHook, TestHookC>();
|
|
|
|
|
services.AddSingleton<IConversationHook, TestHookA>();
|
|
|
|
|
services.AddSingleton<IConversationHook, TestHookB>();
|
2024-12-13 04:44:26 +00:00
|
|
|
|
|
|
|
|
var serviceProvider = services.BuildServiceProvider();
|
2025-05-16 04:21:01 +00:00
|
|
|
var hooks = serviceProvider.GetHooksOrderByPriority<IConversationHook>(string.Empty);
|
2024-12-14 16:35:37 +00:00
|
|
|
|
2025-05-16 04:21:01 +00:00
|
|
|
Assert.AreEqual(3, hooks.Count());
|
2024-12-13 04:44:26 +00:00
|
|
|
|
2024-12-14 16:35:37 +00:00
|
|
|
var prevHook = default(IConversationHook);
|
|
|
|
|
|
|
|
|
|
// Assert priority
|
2025-05-16 04:21:01 +00:00
|
|
|
foreach (var hook in hooks)
|
2024-12-14 16:35:37 +00:00
|
|
|
{
|
|
|
|
|
if (prevHook != null)
|
|
|
|
|
{
|
|
|
|
|
Assert.IsTrue(prevHook.Priority < hook.Priority);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
prevHook = hook;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class TestHookA : ConversationHookBase
|
|
|
|
|
{
|
|
|
|
|
public TestHookA()
|
|
|
|
|
{
|
|
|
|
|
Priority = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class TestHookB : ConversationHookBase
|
|
|
|
|
{
|
2024-12-14 17:25:19 +00:00
|
|
|
public TestHookB()
|
2024-12-14 16:35:37 +00:00
|
|
|
{
|
|
|
|
|
Priority = 2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class TestHookC : ConversationHookBase
|
|
|
|
|
{
|
2024-12-14 17:25:19 +00:00
|
|
|
public TestHookC()
|
2024-12-14 16:35:37 +00:00
|
|
|
{
|
|
|
|
|
Priority = 3;
|
|
|
|
|
}
|
2024-12-13 04:44:26 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|