Skip to content

Commit a98c8c1

Browse files
committed
fix: Correct event channel completion logic and enhance test setup
Signed-off-by: André Silva <[email protected]>
1 parent 46274a2 commit a98c8c1

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/OpenFeature/EventExecutor.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ private void StartListeningAndShutdownOld(FeatureProvider newProvider, FeaturePr
147147
if (oldProvider != null && !this.IsProviderBound(oldProvider))
148148
{
149149
this._activeSubscriptions.Remove(oldProvider);
150-
oldProvider.GetEventChannel()?.Writer.Complete();
150+
oldProvider.GetEventChannel().Writer.Complete();
151151
}
152152
}
153153

test/OpenFeature.Tests/OpenFeatureTests.cs

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Diagnostics.CodeAnalysis;
33
using System.Linq;
4+
using System.Threading.Channels;
45
using System.Threading.Tasks;
56
using NSubstitute;
67
using OpenFeature.Constant;
@@ -47,25 +48,29 @@ public async Task OpenFeature_Should_Shutdown_Unused_Provider()
4748
{
4849
var providerA = Substitute.For<FeatureProvider>();
4950
providerA.Status.Returns(ProviderStatus.NotReady);
51+
providerA.GetEventChannel().Returns(Channel.CreateBounded<object>(1));
5052

5153
await Api.Instance.SetProviderAsync(providerA);
5254
await providerA.Received(1).InitializeAsync(Api.Instance.GetContext());
5355

5456
var providerB = Substitute.For<FeatureProvider>();
5557
providerB.Status.Returns(ProviderStatus.NotReady);
58+
providerB.GetEventChannel().Returns(Channel.CreateBounded<object>(1));
5659

5760
await Api.Instance.SetProviderAsync(providerB);
5861
await providerB.Received(1).InitializeAsync(Api.Instance.GetContext());
5962
await providerA.Received(1).ShutdownAsync();
6063

6164
var providerC = Substitute.For<FeatureProvider>();
6265
providerC.Status.Returns(ProviderStatus.NotReady);
66+
providerC.GetEventChannel().Returns(Channel.CreateBounded<object>(1));
6367

6468
await Api.Instance.SetProviderAsync("named", providerC);
6569
await providerC.Received(1).InitializeAsync(Api.Instance.GetContext());
6670

6771
var providerD = Substitute.For<FeatureProvider>();
6872
providerD.Status.Returns(ProviderStatus.NotReady);
73+
providerD.GetEventChannel().Returns(Channel.CreateBounded<object>(1));
6974

7075
await Api.Instance.SetProviderAsync("named", providerD);
7176
await providerD.Received(1).InitializeAsync(Api.Instance.GetContext());

0 commit comments

Comments
 (0)