using Moq; using StackExchange.Redis; using Microsoft.Extensions.Logging; using Orleans.Streams; using Xunit; using Provider; using System.Collections.Generic; using System.Threading.Tasks; using Orleans.Configuration; namespace RedisStreamsProvider.UnitTests { public class RedisStreamAdapterTests { private readonly Mock _mockDatabase; private readonly Mock _mockQueueMapper; private readonly Mock _mockLoggerFactory; private readonly RedisStreamAdapter _adapter; public RedisStreamAdapterTests() { _mockDatabase = new Mock(); var options = new HashRingStreamQueueMapperOptions { TotalQueueCount = 1 }; _mockQueueMapper = new Mock(options, "queueNamePrefix"); _mockLoggerFactory = new Mock(); _adapter = new RedisStreamAdapter(_mockDatabase.Object, "TestProvider", _mockQueueMapper.Object, _mockLoggerFactory.Object); } [Fact] public void Constructor_ShouldInitializeProperties() { Assert.Equal("TestProvider", _adapter.Name); Assert.False(_adapter.IsRewindable); Assert.Equal(StreamProviderDirection.ReadWrite, _adapter.Direction); } [Fact] public void CreateReceiver_ShouldReturnRedisStreamReceiver() { var queueId = QueueId.GetQueueId("queueName", 0, 1); var receiver = _adapter.CreateReceiver(queueId); Assert.NotNull(receiver); Assert.IsType(receiver); } } }