Skip to content

Commit fad0f35

Browse files
fix: merge eval context (open-feature#149)
fix merge eval context Signed-off-by: Robert Grassian <[email protected]> Signed-off-by: Robert Grassian <[email protected]>
1 parent 54fbf08 commit fad0f35

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/main/java/dev/openfeature/sdk/OpenFeatureClient.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ private <T> FlagEvaluationDetails<T> evaluateFlag(FlagValueType type, String key
118118
apiContext = openfeatureApi.getEvaluationContext() != null
119119
? openfeatureApi.getEvaluationContext()
120120
: new MutableContext();
121-
clientContext = openfeatureApi.getEvaluationContext() != null
121+
clientContext = this.getEvaluationContext() != null
122122
? this.getEvaluationContext()
123123
: new MutableContext();
124124

src/test/java/dev/openfeature/sdk/OpenFeatureClientTest.java

+26
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,30 @@ void shouldNotThrowExceptionIfHookHasDifferentTypeArgumentThanHookContext() {
2929
assertThat(actual.getValue()).isTrue();
3030
assertThat(TEST_LOGGER.getLoggingEvents()).filteredOn(event -> event.getLevel().equals(Level.ERROR)).isEmpty();
3131
}
32+
33+
@Test
34+
void mergeContextTest() {
35+
TEST_LOGGER.clear();
36+
37+
String flag = "feature key";
38+
boolean defaultValue = false;
39+
String targetingKey = "targeting key";
40+
EvaluationContext ctx = new MutableContext(targetingKey);
41+
42+
OpenFeatureAPI api = mock(OpenFeatureAPI.class);
43+
FeatureProvider mockProvider = mock(FeatureProvider.class);
44+
// this makes it so that true is returned only if the targeting key set at the client level is honored
45+
when(mockProvider.getBooleanEvaluation(
46+
eq(flag), eq(defaultValue), argThat(
47+
context -> context.getTargetingKey().equals(targetingKey)))).thenReturn(ProviderEvaluation.<Boolean>builder()
48+
.value(true).build());
49+
when(api.getProvider()).thenReturn(mockProvider);
50+
51+
OpenFeatureClient client = new OpenFeatureClient(api, "name", "version");
52+
client.setEvaluationContext(ctx);
53+
54+
FlagEvaluationDetails<Boolean> result = client.getBooleanDetails(flag, defaultValue);
55+
56+
assertThat(result.getValue()).isTrue();
57+
}
3258
}

0 commit comments

Comments
 (0)