From e56c35f422a7127d28eb7dcd9d9906bfb0049eb2 Mon Sep 17 00:00:00 2001 From: confusingboat Date: Fri, 4 Jul 2025 11:24:47 -0500 Subject: [PATCH] wip: refactor redis fixtures to use ISubjectFixture --- .../Ephemerally.Redis.Xunit.csproj | 1 + .../RedisMultiplexerFixture.cs | 23 +++++++------------ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/Ephemerally.Redis.Xunit/Ephemerally.Redis.Xunit.csproj b/src/Ephemerally.Redis.Xunit/Ephemerally.Redis.Xunit.csproj index 4243601..b19e374 100644 --- a/src/Ephemerally.Redis.Xunit/Ephemerally.Redis.Xunit.csproj +++ b/src/Ephemerally.Redis.Xunit/Ephemerally.Redis.Xunit.csproj @@ -15,6 +15,7 @@ + diff --git a/src/Ephemerally.Redis.Xunit/RedisMultiplexerFixture.cs b/src/Ephemerally.Redis.Xunit/RedisMultiplexerFixture.cs index ce8d61c..4366a09 100644 --- a/src/Ephemerally.Redis.Xunit/RedisMultiplexerFixture.cs +++ b/src/Ephemerally.Redis.Xunit/RedisMultiplexerFixture.cs @@ -1,4 +1,5 @@ -using StackExchange.Redis; +using Ephemerally.Xunit; +using StackExchange.Redis; using Xunit; namespace Ephemerally.Redis.Xunit; @@ -12,26 +13,18 @@ public class RedisMultiplexerFixture() : RedisMultiplexerFixture(new TEphemeralRedisInstance()) where TEphemeralRedisInstance : IRedisInstanceFixture, new(); -public class RedisMultiplexerFixture : IRedisMultiplexerFixture, IAsyncLifetime, IAsyncDisposable +public class RedisMultiplexerFixture(ISubjectFixture redisInstanceFixture) + : SubjectFixture, IRedisMultiplexerFixture, IAsyncLifetime, IAsyncDisposable { private bool _disposed; - private readonly IRedisInstanceFixture _redisInstanceFixture; - private readonly Lazy> _multiplexer; + protected ISubjectFixture RedisInstanceFixture { get; } = redisInstanceFixture; - public IConnectionMultiplexer Multiplexer => _multiplexer.Value.Result; - - protected Task GetMultiplexer() => _multiplexer.Value; + public IConnectionMultiplexer Multiplexer => GetOrCreateSubjectAsync().Result; public RedisMultiplexerFixture() : this(UnmanagedDefaultLocalRedisInstanceFixture.DefaultLocalRedisInstanceFixture) { } - protected RedisMultiplexerFixture(IRedisInstanceFixture redisInstanceFixture) - { - _redisInstanceFixture = redisInstanceFixture; - _multiplexer = new Lazy>(CreateMultiplexerAsync); - } - - protected virtual async Task CreateMultiplexerAsync() => + protected override async Task CreateSubjectAsync() => await ConnectionMultiplexer.ConnectAsync(_redisInstanceFixture.ConnectionString); public virtual async Task InitializeAsync() @@ -39,7 +32,7 @@ public virtual async Task InitializeAsync() await _redisInstanceFixture.InitializeAsync(); } - public virtual async Task DisposeAsync() + public override async Task DisposeAsync() { if (_disposed) return; _disposed = true;