add unsub test

This commit is contained in:
Jack Gerrits 2025-01-27 16:09:16 -05:00 committed by Jack Gerrits
parent fd6a369422
commit 0b850fdbdb

View File

@ -63,7 +63,8 @@ public class AgentTests()
// Assert // Assert
Assert.NotNull(response); Assert.NotNull(response);
Assert.IsType<string>(response); Assert.IsType<string>(response);
if (response is string responseString) { if (response is string responseString)
{
Assert.Equal("Request", responseString); Assert.Equal("Request", responseString);
} }
} }
@ -99,41 +100,59 @@ public class AgentTests()
// Assert.Equal(2, subscriptions.Count); // Assert.Equal(2, subscriptions.Count);
// fixture.Stop(); // fixture.Stop();
// } // }
// /// <summary> /// <summary>
// /// Test SubscribeAsync method /// Test SubscribeAsync method
// /// </summary> /// </summary>
// /// <returns>void</returns> /// <returns>void</returns>
// [Fact] ///
// public async Task SubscribeAsync_UnsubscribeAsync_and_GetSubscriptionsTest()
// { public class ReceiverAgent(AgentId id,
// var fixture = new InMemoryAgentRuntimeFixture(); IAgentRuntime runtime) : BaseAgent(id, runtime, "Receiver Agent", null),
// var (_, agent) = fixture.Start(); IHandle<string>
// await agent.SubscribeAsync("TestEvent"); {
// await Task.Delay(100); public ValueTask Handle(string item, MessageContext messageContext)
// var subscriptions = await agent.GetSubscriptionsAsync().ConfigureAwait(true); {
// var found = false; ReceivedItems.Add(item);
// foreach (var subscription in subscriptions) return ValueTask.CompletedTask;
// { }
// if (subscription.TypeSubscription.TopicType == "TestEvent")
// { public List<string> ReceivedItems { get; private set; } = [];
// found = true; }
// }
// } [Fact]
// Assert.True(found); public async Task SubscribeAsync_UnsubscribeAsync_and_GetSubscriptionsTest()
// await agent.UnsubscribeAsync("TestEvent").ConfigureAwait(true); {
// await Task.Delay(500); var runtime = new InProcessRuntime();
// subscriptions = await agent.GetSubscriptionsAsync().ConfigureAwait(true); ReceiverAgent? agent = null;
// found = false; await runtime.RegisterAgentFactoryAsync("MyAgent", (id, runtime) => {
// foreach (var subscription in subscriptions) agent = new ReceiverAgent(id, runtime);
// { return ValueTask.FromResult(agent);
// if (subscription.TypeSubscription.TopicType == "TestEvent") });
// {
// found = true; Assert.Null(agent);
// } await runtime.GetAgentAsync("MyAgent", lazy: false);
// } Assert.NotNull(agent);
// Assert.False(found); Assert.True(agent.ReceivedItems.Count == 0);
// fixture.Stop();
// } var topicTypeName = "TestTopic";
await runtime.PublishMessageAsync("info", new TopicId(topicTypeName));
await Task.Delay(100);
Assert.True(agent.ReceivedItems.Count == 0);
var subscription = new TypeSubscription(topicTypeName, "MyAgent");
await runtime.AddSubscriptionAsync(subscription);
await runtime.PublishMessageAsync("info", new TopicId(topicTypeName));
await Task.Delay(100);
Assert.True(agent.ReceivedItems.Count == 1);
Assert.Equal("info", agent.ReceivedItems[0]);
await runtime.RemoveSubscriptionAsync(subscription.Id);
await runtime.PublishMessageAsync("info", new TopicId(topicTypeName));
await Task.Delay(100);
Assert.True(agent.ReceivedItems.Count == 1);
}
// /// <summary> // /// <summary>
// /// Test StoreAsync and ReadAsync methods // /// Test StoreAsync and ReadAsync methods