From 1a2886d4b57620403e784b67811f69ca568e54ad Mon Sep 17 00:00:00 2001 From: haisum Date: Tue, 6 May 2025 20:30:34 +0500 Subject: [PATCH 1/2] fix a few tests --- test/IntegrationTests/TestBase.cs | 6 +++++- test/IntegrationTests/TimeExpirationAsyncTests.cs | 10 ++++------ test/UnitTests/CacheServiceExtensionsUnitTests.cs | 3 +++ test/UnitTests/TimeExpirationUnitTests.cs | 15 +++++++++++++-- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/test/IntegrationTests/TestBase.cs b/test/IntegrationTests/TestBase.cs index ff88424..41fa600 100644 --- a/test/IntegrationTests/TestBase.cs +++ b/test/IntegrationTests/TestBase.cs @@ -89,7 +89,11 @@ public virtual async ValueTask InitializeAsync() // Create or ensure KV store exists var jsContext = NatsConnection.CreateJetStreamContext(); var kvContext = new NatsKVContext(jsContext); - await kvContext.CreateOrUpdateStoreAsync(new NatsKVConfig("cache")); + var kvConfig = new NatsKVConfig("cache") + { + LimitMarkerTTL = TimeSpan.MaxValue, + }; + await kvContext.CreateOrUpdateStoreAsync(kvConfig); } /// diff --git a/test/IntegrationTests/TimeExpirationAsyncTests.cs b/test/IntegrationTests/TimeExpirationAsyncTests.cs index 91871ef..ee4d99c 100644 --- a/test/IntegrationTests/TimeExpirationAsyncTests.cs +++ b/test/IntegrationTests/TimeExpirationAsyncTests.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Options; +using NATS.Client.KeyValueStore; using Xunit; namespace CodeCargo.NatsDistributedCache.IntegrationTests; @@ -121,8 +122,7 @@ public async Task SlidingExpirationExpiresIfNotAccessedAsync() await Task.Delay(TimeSpan.FromSeconds(3)); - result = await cache.GetAsync(key); - Assert.Null(result); + await Assert.ThrowsAsync(async () => await cache.GetAsync(key)); } [Fact] @@ -148,8 +148,7 @@ public async Task SlidingExpirationRenewedByAccessAsync() await Task.Delay(TimeSpan.FromSeconds(3)); - result = await cache.GetAsync(key); - Assert.Null(result); + await Assert.ThrowsAsync(async () => await cache.GetAsync(key)); } [Fact] @@ -181,8 +180,7 @@ public async Task SlidingExpirationRenewedByAccessUntilAbsoluteExpirationAsync() await Task.Delay(TimeSpan.FromSeconds(0.5)); } - result = await cache.GetAsync(key); - Assert.Null(result); + await Assert.ThrowsAsync(async () => await cache.GetAsync(key)); } private static async Task GetNameAndReset(IDistributedCache cache, [CallerMemberName] string caller = "") diff --git a/test/UnitTests/CacheServiceExtensionsUnitTests.cs b/test/UnitTests/CacheServiceExtensionsUnitTests.cs index 747418f..e9890b1 100644 --- a/test/UnitTests/CacheServiceExtensionsUnitTests.cs +++ b/test/UnitTests/CacheServiceExtensionsUnitTests.cs @@ -102,6 +102,9 @@ public void AddNatsCache_UsesCacheOptionsAction() wasInvoked = true; }); + var sp = services.BuildServiceProvider(); + _ = sp.GetRequiredService(); + // Assert Assert.True(wasInvoked); } diff --git a/test/UnitTests/TimeExpirationUnitTests.cs b/test/UnitTests/TimeExpirationUnitTests.cs index 705e1c6..918f2cd 100644 --- a/test/UnitTests/TimeExpirationUnitTests.cs +++ b/test/UnitTests/TimeExpirationUnitTests.cs @@ -3,6 +3,7 @@ using System.Threading; using CodeCargo.NatsDistributedCache.UnitTests.TestHelpers; using Microsoft.Extensions.Caching.Distributed; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; using NATS.Client.Core; @@ -10,13 +11,23 @@ namespace CodeCargo.NatsDistributedCache.UnitTests; +public interface ITestNatsConnection : INatsConnection +{ + public new NatsOpts Opts { get; set; } +} + public class TimeExpirationUnitTests { - private readonly Mock _mockNatsConnection; + private readonly Mock _mockNatsConnection; public TimeExpirationUnitTests() { - _mockNatsConnection = new Mock(); + _mockNatsConnection = new Mock(); + // Setup the mock to properly handle the Opts property + var opts = new NatsOpts { LoggerFactory = new LoggerFactory() }; + _mockNatsConnection.SetupGet(m => m.Opts).Returns(opts); + var connection = new NatsConnection(opts); + _mockNatsConnection.SetupGet(m => m.Connection).Returns(connection); } private IDistributedCache CreateCacheInstance() From 1faa3abc9585d4d7324f034af35c6d75f30781aa Mon Sep 17 00:00:00 2001 From: haisum Date: Tue, 6 May 2025 20:32:25 +0500 Subject: [PATCH 2/2] remove ITestNatsConnection --- test/UnitTests/TimeExpirationUnitTests.cs | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/test/UnitTests/TimeExpirationUnitTests.cs b/test/UnitTests/TimeExpirationUnitTests.cs index 918f2cd..61524bf 100644 --- a/test/UnitTests/TimeExpirationUnitTests.cs +++ b/test/UnitTests/TimeExpirationUnitTests.cs @@ -1,28 +1,18 @@ -using System; -using System.Runtime.CompilerServices; -using System.Threading; using CodeCargo.NatsDistributedCache.UnitTests.TestHelpers; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Moq; using NATS.Client.Core; -using Xunit; namespace CodeCargo.NatsDistributedCache.UnitTests; -public interface ITestNatsConnection : INatsConnection -{ - public new NatsOpts Opts { get; set; } -} - public class TimeExpirationUnitTests { - private readonly Mock _mockNatsConnection; + private readonly Mock _mockNatsConnection; public TimeExpirationUnitTests() { - _mockNatsConnection = new Mock(); + _mockNatsConnection = new Mock(); // Setup the mock to properly handle the Opts property var opts = new NatsOpts { LoggerFactory = new LoggerFactory() }; _mockNatsConnection.SetupGet(m => m.Opts).Returns(opts);