From 0594ed7e91df817dbf1bf89d1cfebab99ab47e6d Mon Sep 17 00:00:00 2001 From: Benjamin Evenson <2031163+benjiro@users.noreply.github.com> Date: Fri, 26 Aug 2022 07:25:55 +1000 Subject: [PATCH] Removed evaluation options from provider As per spec 0.4 remove flag evaluation option from the provider - Update FeatureProvider - Update doco Signed-off-by: Benjamin Evenson <2031163+benjiro@users.noreply.github.com> --- README.md | 15 +++----- src/OpenFeature.SDK/FeatureProvider.cs | 15 +++----- src/OpenFeature.SDK/NoOpProvider.cs | 11 +++--- src/OpenFeature.SDK/OpenFeatureClient.cs | 4 +-- .../FeatureProviderTests.cs | 14 ++++---- .../OpenFeatureClientTests.cs | 28 +++++++-------- .../OpenFeatureHookTests.cs | 34 +++++++++---------- .../TestImplementations.cs | 15 +++----- 8 files changed, 59 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index cd144c20..852163e8 100644 --- a/README.md +++ b/README.md @@ -53,36 +53,31 @@ public class MyFeatureProvider : FeatureProvider } public Task> ResolveBooleanValue(string flagKey, bool defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { // code to resolve boolean details } public Task> ResolveStringValue(string flagKey, string defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { // code to resolve string details } public Task> ResolveIntegerValue(string flagKey, int defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { // code to resolve integer details } public Task> ResolveDoubleValue(string flagKey, double defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { // code to resolve integer details } public Task> ResolveStructureValue(string flagKey, T defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { // code to resolve object details } diff --git a/src/OpenFeature.SDK/FeatureProvider.cs b/src/OpenFeature.SDK/FeatureProvider.cs index ef767b4a..21c3aaa8 100644 --- a/src/OpenFeature.SDK/FeatureProvider.cs +++ b/src/OpenFeature.SDK/FeatureProvider.cs @@ -37,10 +37,9 @@ public abstract class FeatureProvider /// Feature flag key /// Default value /// - /// /// public abstract Task> ResolveBooleanValue(string flagKey, bool defaultValue, - EvaluationContext context = null, FlagEvaluationOptions config = null); + EvaluationContext context = null); /// /// Resolves a string feature flag @@ -48,10 +47,9 @@ public abstract Task> ResolveBooleanValue(string flagKey /// Feature flag key /// Default value /// - /// /// public abstract Task> ResolveStringValue(string flagKey, string defaultValue, - EvaluationContext context = null, FlagEvaluationOptions config = null); + EvaluationContext context = null); /// /// Resolves a integer feature flag @@ -59,10 +57,9 @@ public abstract Task> ResolveStringValue(string flagKe /// Feature flag key /// Default value /// - /// /// public abstract Task> ResolveIntegerValue(string flagKey, int defaultValue, - EvaluationContext context = null, FlagEvaluationOptions config = null); + EvaluationContext context = null); /// /// Resolves a double feature flag @@ -70,10 +67,9 @@ public abstract Task> ResolveIntegerValue(string flagKey, /// Feature flag key /// Default value /// - /// /// public abstract Task> ResolveDoubleValue(string flagKey, double defaultValue, - EvaluationContext context = null, FlagEvaluationOptions config = null); + EvaluationContext context = null); /// /// Resolves a structured feature flag @@ -81,10 +77,9 @@ public abstract Task> ResolveDoubleValue(string flagKe /// Feature flag key /// Default value /// - /// /// Type of object /// public abstract Task> ResolveStructureValue(string flagKey, T defaultValue, - EvaluationContext context = null, FlagEvaluationOptions config = null); + EvaluationContext context = null); } } diff --git a/src/OpenFeature.SDK/NoOpProvider.cs b/src/OpenFeature.SDK/NoOpProvider.cs index 0b5d621b..015c7dc5 100644 --- a/src/OpenFeature.SDK/NoOpProvider.cs +++ b/src/OpenFeature.SDK/NoOpProvider.cs @@ -13,28 +13,27 @@ public override Metadata GetMetadata() return this._metadata; } - public override Task> ResolveBooleanValue(string flagKey, bool defaultValue, EvaluationContext context = null, FlagEvaluationOptions config = null) + public override Task> ResolveBooleanValue(string flagKey, bool defaultValue, EvaluationContext context = null) { return Task.FromResult(NoOpResponse(flagKey, defaultValue)); } - public override Task> ResolveStringValue(string flagKey, string defaultValue, EvaluationContext context = null, FlagEvaluationOptions config = null) + public override Task> ResolveStringValue(string flagKey, string defaultValue, EvaluationContext context = null) { return Task.FromResult(NoOpResponse(flagKey, defaultValue)); } - public override Task> ResolveIntegerValue(string flagKey, int defaultValue, EvaluationContext context = null, FlagEvaluationOptions config = null) + public override Task> ResolveIntegerValue(string flagKey, int defaultValue, EvaluationContext context = null) { return Task.FromResult(NoOpResponse(flagKey, defaultValue)); } - public override Task> ResolveDoubleValue(string flagKey, double defaultValue, EvaluationContext context = null, - FlagEvaluationOptions config = null) + public override Task> ResolveDoubleValue(string flagKey, double defaultValue, EvaluationContext context = null) { return Task.FromResult(NoOpResponse(flagKey, defaultValue)); } - public override Task> ResolveStructureValue(string flagKey, T defaultValue, EvaluationContext context = null, FlagEvaluationOptions config = null) + public override Task> ResolveStructureValue(string flagKey, T defaultValue, EvaluationContext context = null) { return Task.FromResult(NoOpResponse(flagKey, defaultValue)); } diff --git a/src/OpenFeature.SDK/OpenFeatureClient.cs b/src/OpenFeature.SDK/OpenFeatureClient.cs index f2a3bb02..13ae1f28 100644 --- a/src/OpenFeature.SDK/OpenFeatureClient.cs +++ b/src/OpenFeature.SDK/OpenFeatureClient.cs @@ -201,7 +201,7 @@ await this.EvaluateFlag(this._featureProvider.ResolveStructureValue, FlagValueTy defaultValue, context, config); private async Task> EvaluateFlag( - Func>> resolveValueDelegate, + Func>> resolveValueDelegate, FlagValueType flagValueType, string flagKey, T defaultValue, EvaluationContext context = null, FlagEvaluationOptions options = null) { @@ -244,7 +244,7 @@ private async Task> EvaluateFlag( await this.TriggerBeforeHooks(allHooks, hookContext, options); evaluation = - (await resolveValueDelegate.Invoke(flagKey, defaultValue, hookContext.EvaluationContext, options)) + (await resolveValueDelegate.Invoke(flagKey, defaultValue, hookContext.EvaluationContext)) .ToFlagEvaluationDetails(); await this.TriggerAfterHooks(allHooksReversed, hookContext, evaluation, options); diff --git a/test/OpenFeature.SDK.Tests/FeatureProviderTests.cs b/test/OpenFeature.SDK.Tests/FeatureProviderTests.cs index b92ccb6a..541ee5c5 100644 --- a/test/OpenFeature.SDK.Tests/FeatureProviderTests.cs +++ b/test/OpenFeature.SDK.Tests/FeatureProviderTests.cs @@ -21,7 +21,7 @@ public void Provider_Must_Have_Metadata() } [Fact] - [Specification("2.2", "The `feature provider` interface MUST define methods to resolve flag values, with parameters `flag key` (string, required), `default value` (boolean | number | string | structure, required), `evaluation context` (optional), and `evaluation options` (optional), which returns a `flag resolution` structure.")] + [Specification("2.2", "The `feature provider` interface MUST define methods to resolve flag values, with parameters `flag key` (string, required), `default value` (boolean | number | string | structure, required) and `evaluation context` (optional), which returns a `flag resolution` structure.")] [Specification("2.3.1", "The `feature provider` interface MUST define methods for typed flag resolution, including boolean, numeric, string, and structure.")] [Specification("2.4", "In cases of normal execution, the `provider` MUST populate the `flag resolution` structure's `value` field with the resolved flag value.")] [Specification("2.5", "In cases of normal execution, the `provider` SHOULD populate the `flag resolution` structure's `variant` field with a string identifier corresponding to the returned flag value.")] @@ -69,22 +69,22 @@ public async Task Provider_Must_ErrorType() var defaultStructureValue = fixture.Create(); var providerMock = new Mock(MockBehavior.Strict); - providerMock.Setup(x => x.ResolveBooleanValue(flagName, defaultBoolValue, It.IsAny(), It.IsAny())) + providerMock.Setup(x => x.ResolveBooleanValue(flagName, defaultBoolValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultBoolValue, ErrorType.General, NoOpProvider.ReasonNoOp, NoOpProvider.Variant)); - providerMock.Setup(x => x.ResolveIntegerValue(flagName, defaultIntegerValue, It.IsAny(), It.IsAny())) + providerMock.Setup(x => x.ResolveIntegerValue(flagName, defaultIntegerValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultIntegerValue, ErrorType.ParseError, NoOpProvider.ReasonNoOp, NoOpProvider.Variant)); - providerMock.Setup(x => x.ResolveDoubleValue(flagName, defaultDoubleValue, It.IsAny(), It.IsAny())) + providerMock.Setup(x => x.ResolveDoubleValue(flagName, defaultDoubleValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultDoubleValue, ErrorType.ParseError, NoOpProvider.ReasonNoOp, NoOpProvider.Variant)); - providerMock.Setup(x => x.ResolveStringValue(flagName, defaultStringValue, It.IsAny(), It.IsAny())) + providerMock.Setup(x => x.ResolveStringValue(flagName, defaultStringValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultStringValue, ErrorType.TypeMismatch, NoOpProvider.ReasonNoOp, NoOpProvider.Variant)); - providerMock.Setup(x => x.ResolveStructureValue(flagName, defaultStructureValue, It.IsAny(), It.IsAny())) + providerMock.Setup(x => x.ResolveStructureValue(flagName, defaultStructureValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultStructureValue, ErrorType.FlagNotFound, NoOpProvider.ReasonNoOp, NoOpProvider.Variant)); - providerMock.Setup(x => x.ResolveStructureValue(flagName2, defaultStructureValue, It.IsAny(), It.IsAny())) + providerMock.Setup(x => x.ResolveStructureValue(flagName2, defaultStructureValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultStructureValue, ErrorType.ProviderNotReady, NoOpProvider.ReasonNoOp, NoOpProvider.Variant)); var provider = providerMock.Object; diff --git a/test/OpenFeature.SDK.Tests/OpenFeatureClientTests.cs b/test/OpenFeature.SDK.Tests/OpenFeatureClientTests.cs index f10e2d2c..6a389bc5 100644 --- a/test/OpenFeature.SDK.Tests/OpenFeatureClientTests.cs +++ b/test/OpenFeature.SDK.Tests/OpenFeatureClientTests.cs @@ -165,7 +165,7 @@ public async Task OpenFeatureClient_Should_Return_DefaultValue_When_Type_Mismatc // This will fail to case a String to TestStructure mockedFeatureProvider - .Setup(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny(), null)) + .Setup(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, "Mismatch")); mockedFeatureProvider.Setup(x => x.GetMetadata()) .Returns(new Metadata(fixture.Create())); @@ -179,7 +179,7 @@ public async Task OpenFeatureClient_Should_Return_DefaultValue_When_Type_Mismatc evaluationDetails.ErrorType.Should().Be(ErrorType.TypeMismatch.GetDescription()); mockedFeatureProvider - .Verify(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny(), null), Times.Once); + .Verify(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny()), Times.Once); mockedLogger.Verify( x => x.Log( @@ -202,7 +202,7 @@ public async Task Should_Resolve_BooleanValue() var featureProviderMock = new Mock(MockBehavior.Strict); featureProviderMock - .Setup(x => x.ResolveBooleanValue(flagName, defaultValue, It.IsAny(), null)) + .Setup(x => x.ResolveBooleanValue(flagName, defaultValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultValue)); featureProviderMock.Setup(x => x.GetMetadata()) .Returns(new Metadata(fixture.Create())); @@ -214,7 +214,7 @@ public async Task Should_Resolve_BooleanValue() (await client.GetBooleanValue(flagName, defaultValue)).Should().Be(defaultValue); - featureProviderMock.Verify(x => x.ResolveBooleanValue(flagName, defaultValue, It.IsAny(), null), Times.Once); + featureProviderMock.Verify(x => x.ResolveBooleanValue(flagName, defaultValue, It.IsAny()), Times.Once); } [Fact] @@ -228,7 +228,7 @@ public async Task Should_Resolve_StringValue() var featureProviderMock = new Mock(MockBehavior.Strict); featureProviderMock - .Setup(x => x.ResolveStringValue(flagName, defaultValue, It.IsAny(), null)) + .Setup(x => x.ResolveStringValue(flagName, defaultValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultValue)); featureProviderMock.Setup(x => x.GetMetadata()) .Returns(new Metadata(fixture.Create())); @@ -240,7 +240,7 @@ public async Task Should_Resolve_StringValue() (await client.GetStringValue(flagName, defaultValue)).Should().Be(defaultValue); - featureProviderMock.Verify(x => x.ResolveStringValue(flagName, defaultValue, It.IsAny(), null), Times.Once); + featureProviderMock.Verify(x => x.ResolveStringValue(flagName, defaultValue, It.IsAny()), Times.Once); } [Fact] @@ -254,7 +254,7 @@ public async Task Should_Resolve_IntegerValue() var featureProviderMock = new Mock(MockBehavior.Strict); featureProviderMock - .Setup(x => x.ResolveIntegerValue(flagName, defaultValue, It.IsAny(), null)) + .Setup(x => x.ResolveIntegerValue(flagName, defaultValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultValue)); featureProviderMock.Setup(x => x.GetMetadata()) .Returns(new Metadata(fixture.Create())); @@ -266,7 +266,7 @@ public async Task Should_Resolve_IntegerValue() (await client.GetIntegerValue(flagName, defaultValue)).Should().Be(defaultValue); - featureProviderMock.Verify(x => x.ResolveIntegerValue(flagName, defaultValue, It.IsAny(), null), Times.Once); + featureProviderMock.Verify(x => x.ResolveIntegerValue(flagName, defaultValue, It.IsAny()), Times.Once); } [Fact] @@ -280,7 +280,7 @@ public async Task Should_Resolve_DoubleValue() var featureProviderMock = new Mock(MockBehavior.Strict); featureProviderMock - .Setup(x => x.ResolveDoubleValue(flagName, defaultValue, It.IsAny(), null)) + .Setup(x => x.ResolveDoubleValue(flagName, defaultValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultValue)); featureProviderMock.Setup(x => x.GetMetadata()) .Returns(new Metadata(fixture.Create())); @@ -292,7 +292,7 @@ public async Task Should_Resolve_DoubleValue() (await client.GetDoubleValue(flagName, defaultValue)).Should().Be(defaultValue); - featureProviderMock.Verify(x => x.ResolveDoubleValue(flagName, defaultValue, It.IsAny(), null), Times.Once); + featureProviderMock.Verify(x => x.ResolveDoubleValue(flagName, defaultValue, It.IsAny()), Times.Once); } [Fact] @@ -306,7 +306,7 @@ public async Task Should_Resolve_StructureValue() var featureProviderMock = new Mock(MockBehavior.Strict); featureProviderMock - .Setup(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny(), null)) + .Setup(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny())) .ReturnsAsync(new ResolutionDetails(flagName, defaultValue)); featureProviderMock.Setup(x => x.GetMetadata()) .Returns(new Metadata(fixture.Create())); @@ -318,7 +318,7 @@ public async Task Should_Resolve_StructureValue() (await client.GetObjectValue(flagName, defaultValue)).Should().Be(defaultValue); - featureProviderMock.Verify(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny(), null), Times.Once); + featureProviderMock.Verify(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny()), Times.Once); } [Fact] @@ -332,7 +332,7 @@ public async Task When_Exception_Occurs_During_Evaluation_Should_Return_Error() var featureProviderMock = new Mock(MockBehavior.Strict); featureProviderMock - .Setup(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny(), null)) + .Setup(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny())) .Throws(new FeatureProviderException(ErrorType.ParseError)); featureProviderMock.Setup(x => x.GetMetadata()) .Returns(new Metadata(fixture.Create())); @@ -345,7 +345,7 @@ public async Task When_Exception_Occurs_During_Evaluation_Should_Return_Error() response.ErrorType.Should().Be(ErrorType.ParseError.GetDescription()); response.Reason.Should().Be(Reason.Error); - featureProviderMock.Verify(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny(), null), Times.Once); + featureProviderMock.Verify(x => x.ResolveStructureValue(flagName, defaultValue, It.IsAny()), Times.Once); } [Fact] diff --git a/test/OpenFeature.SDK.Tests/OpenFeatureHookTests.cs b/test/OpenFeature.SDK.Tests/OpenFeatureHookTests.cs index 89c0d415..4ac0e828 100644 --- a/test/OpenFeature.SDK.Tests/OpenFeatureHookTests.cs +++ b/test/OpenFeature.SDK.Tests/OpenFeatureHookTests.cs @@ -204,38 +204,38 @@ public async Task Evaluation_Context_Must_Be_Merged_In_Correct_Order() var propHook = "4.3.4hook"; // setup a cascade of overwriting properties - OpenFeature.Instance.SetContext(new EvaluationContext + OpenFeature.Instance.SetContext(new EvaluationContext { [propGlobal] = true, [propGlobalToOverwrite] = false }); - var clientContext = new EvaluationContext + var clientContext = new EvaluationContext { [propClient] = true, [propGlobalToOverwrite] = true, [propClientToOverwrite] = false }; - var invocationContext = new EvaluationContext + var invocationContext = new EvaluationContext { [propInvocation] = true, [propClientToOverwrite] = true, [propInvocationToOverwrite] = false, }; - var hookContext = new EvaluationContext + var hookContext = new EvaluationContext { [propHook] = true, [propInvocationToOverwrite] = true, }; - var provider = new Mock(MockBehavior.Strict); - + var provider = new Mock(MockBehavior.Strict); + provider.Setup(x => x.GetMetadata()) .Returns(new Metadata(null)); provider.Setup(x => x.GetProviderHooks()) .Returns(Array.Empty()); - provider.Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny(), null)) + provider.Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(new ResolutionDetails("test", true)); OpenFeature.Instance.SetProvider(provider.Object); @@ -249,7 +249,7 @@ public async Task Evaluation_Context_Must_Be_Merged_In_Correct_Order() await client.GetBooleanValue("test", false, invocationContext, new FlagEvaluationOptions(new[] { hook.Object }, new Dictionary())); // after proper merging, all properties should equal true - provider.Verify(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.Is(y => + provider.Verify(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.Is(y => y.Get(propGlobal) && y.Get(propClient) && y.Get(propGlobalToOverwrite) @@ -257,7 +257,7 @@ public async Task Evaluation_Context_Must_Be_Merged_In_Correct_Order() && y.Get(propClientToOverwrite) && y.Get(propHook) && y.Get(propInvocationToOverwrite) - ), It.IsAny()), Times.Once); + )), Times.Once); } [Fact] @@ -315,7 +315,7 @@ public async Task Hook_Should_Execute_In_Correct_Order() .ReturnsAsync(new EvaluationContext()); featureProvider.InSequence(sequence) - .Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny(), null)) + .Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(new ResolutionDetails("test", false)); hook.InSequence(sequence).Setup(x => x.After(It.IsAny>(), @@ -333,7 +333,7 @@ public async Task Hook_Should_Execute_In_Correct_Order() hook.Verify(x => x.Before(It.IsAny>(), It.IsAny>()), Times.Once); hook.Verify(x => x.After(It.IsAny>(), It.IsAny>(), It.IsAny>()), Times.Once); hook.Verify(x => x.Finally(It.IsAny>(), It.IsAny>()), Times.Once); - featureProvider.Verify(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny(), null), Times.Once); + featureProvider.Verify(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); } [Fact] @@ -384,8 +384,7 @@ public async Task Finally_Hook_Should_Be_Executed_Even_If_Abnormal_Termination() .ReturnsAsync(new EvaluationContext()); featureProvider.InSequence(sequence) - .Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny(), - null)) + .Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(new ResolutionDetails("test", false)); hook2.InSequence(sequence).Setup(x => x.After(It.IsAny>(), @@ -413,7 +412,7 @@ public async Task Finally_Hook_Should_Be_Executed_Even_If_Abnormal_Termination() hook1.Verify(x => x.Before(It.IsAny>(), null), Times.Once); hook2.Verify(x => x.Before(It.IsAny>(), null), Times.Once); - featureProvider.Verify(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny(), null), Times.Once); + featureProvider.Verify(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); hook2.Verify(x => x.After(It.IsAny>(), It.IsAny>(), null), Times.Once); hook1.Verify(x => x.After(It.IsAny>(), It.IsAny>(), null), Times.Once); hook2.Verify(x => x.Finally(It.IsAny>(), null), Times.Once); @@ -444,8 +443,7 @@ public async Task Error_Hook_Should_Be_Executed_Even_If_Abnormal_Termination() .ReturnsAsync(new EvaluationContext()); featureProvider1.InSequence(sequence) - .Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny(), - null)) + .Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny())) .Throws(new Exception()); hook2.InSequence(sequence).Setup(x => @@ -528,7 +526,7 @@ public async Task Hook_Hints_May_Be_Optional() .ReturnsAsync(evaluationContext); featureProvider.InSequence(sequence) - .Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny(), flagOptions)) + .Setup(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(new ResolutionDetails("test", false)); hook.InSequence(sequence) @@ -547,7 +545,7 @@ public async Task Hook_Hints_May_Be_Optional() hook.Verify(x => x.Before(It.IsAny>(), defaultEmptyHookHints), Times.Once); hook.Verify(x => x.After(It.IsAny>(), It.IsAny>(), defaultEmptyHookHints), Times.Once); hook.Verify(x => x.Finally(It.IsAny>(), defaultEmptyHookHints), Times.Once); - featureProvider.Verify(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny(), flagOptions), Times.Once); + featureProvider.Verify(x => x.ResolveBooleanValue(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); } [Fact] diff --git a/test/OpenFeature.SDK.Tests/TestImplementations.cs b/test/OpenFeature.SDK.Tests/TestImplementations.cs index 0b2d29cd..851886db 100644 --- a/test/OpenFeature.SDK.Tests/TestImplementations.cs +++ b/test/OpenFeature.SDK.Tests/TestImplementations.cs @@ -53,36 +53,31 @@ public override Metadata GetMetadata() } public override Task> ResolveBooleanValue(string flagKey, bool defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { return Task.FromResult(new ResolutionDetails(flagKey, defaultValue)); } public override Task> ResolveStringValue(string flagKey, string defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { return Task.FromResult(new ResolutionDetails(flagKey, defaultValue)); } public override Task> ResolveIntegerValue(string flagKey, int defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { return Task.FromResult(new ResolutionDetails(flagKey, defaultValue)); } public override Task> ResolveDoubleValue(string flagKey, double defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { return Task.FromResult(new ResolutionDetails(flagKey, defaultValue)); } public override Task> ResolveStructureValue(string flagKey, T defaultValue, - EvaluationContext context = null, - FlagEvaluationOptions config = null) + EvaluationContext context = null) { return Task.FromResult(new ResolutionDetails(flagKey, defaultValue)); }