49 lines
1.6 KiB
C#

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<IDatabase> _mockDatabase;
private readonly Mock<HashRingBasedStreamQueueMapper> _mockQueueMapper;
private readonly Mock<ILoggerFactory> _mockLoggerFactory;
private readonly RedisStreamAdapter _adapter;
public RedisStreamAdapterTests()
{
_mockDatabase = new Mock<IDatabase>();
var options = new HashRingStreamQueueMapperOptions { TotalQueueCount = 1 };
_mockQueueMapper = new Mock<HashRingBasedStreamQueueMapper>(options, "queueNamePrefix");
_mockLoggerFactory = new Mock<ILoggerFactory>();
_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<RedisStreamReceiver>(receiver);
}
}
}