elsa-core/test/component/Elsa.ProtoCluster.ComponentTests/AzureContainerAppTests/RedisClusterMemberStoreTests.cs
Sipke Schoorstra 815b544f53 Update Flowchart completion logic
In addition to taking into account scheduled work, also check if there are actual activity instances still running
2023-08-04 11:45:07 +02:00

63 lines
2.1 KiB
C#

using Proto.Cluster;
using Proto.Cluster.AzureContainerApps.Stores.Redis;
using StackExchange.Redis;
namespace Elsa.ProtoCluster.ComponentTests.AzureContainerAppTests;
public class RedisClusterMemberStoreTests : IClassFixture<RedisFixture>
{
private readonly RedisClusterMemberStore _memberStore;
private readonly Member _member;
public RedisClusterMemberStoreTests(RedisFixture redisFixture)
{
var multiplexer = ConnectionMultiplexer.Connect(redisFixture.GetConnectionString());
_memberStore = new RedisClusterMemberStore(multiplexer);
_member = new Member
{
Id = "id1",
Host = "localhost",
Port = 8000,
Kinds = { "kind1", "kind2" }
};
}
[Fact(DisplayName = "Invoking RegisterAsync should register member")]
public async Task RegisterAsync_ShouldRegisterMember()
{
await _memberStore.RegisterAsync("cluster", _member);
var members = await _memberStore.ListAsync();
Assert.Contains(members, m => m.Id == _member.Id);
}
[Fact(DisplayName = "Invoking UnregisterAsync should unregister member")]
public async Task UnregisterAsync_ShouldUnregisterMember()
{
await _memberStore.RegisterAsync("cluster", _member);
await _memberStore.UnregisterAsync(_member.Id);
var members = await _memberStore.ListAsync();
Assert.DoesNotContain(members, m => m.Id == _member.Id);
}
[Fact(DisplayName = "Invoking ClearAsync should clear all members")]
public async Task ClearAsync_ShouldClearAllMembers()
{
await _memberStore.RegisterAsync("cluster", _member);
await _memberStore.ClearAsync("cluster");
var members = await _memberStore.ListAsync();
Assert.Empty(members);
}
[Fact(DisplayName = "Invoking ListAsync should return all registered members")]
public async Task ListAsync_ShouldReturnAllRegisteredMembers()
{
await _memberStore.RegisterAsync("cluster", _member);
var members = await _memberStore.ListAsync();
Assert.Contains(members, m => m.Id == _member.Id);
}
}