Skip to content

Commit 9b55de9

Browse files
authored
fix: getEnvironmentFlags includes segments in evaluation context (#193)
1 parent 1ddbb40 commit 9b55de9

File tree

3 files changed

+57
-2
lines changed

3 files changed

+57
-2
lines changed

pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,16 @@
162162
</dependency>
163163
<dependency>
164164
<groupId>org.mockito</groupId>
165-
<artifactId>mockito-core</artifactId>
165+
<artifactId>mockito-inline</artifactId>
166166
<version>3.8.0</version>
167167
<scope>test</scope>
168168
</dependency>
169+
<dependency>
170+
<!-- see https://github.com/mockito/mockito/issues/3328#issuecomment-2260087310 -->
171+
<groupId>net.bytebuddy</groupId>
172+
<artifactId>byte-buddy</artifactId>
173+
<version>1.14.17</version>
174+
</dependency>
169175
<dependency>
170176
<groupId>com.github.gmazzo</groupId>
171177
<artifactId>okhttp-mock</artifactId>

src/main/java/com/flagsmith/FlagsmithClient.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,10 @@ private Flags getEnvironmentFlagsFromEvaluationContext() throws FlagsmithClientE
216216
return getDefaultFlags();
217217
}
218218

219-
final EvaluationResult result = Engine.getEvaluationResult(evaluationContext);
219+
final EvaluationResult result = Engine.getEvaluationResult(
220+
new EvaluationContext(evaluationContext)
221+
.withSegments(null)
222+
);
220223

221224
return Flags.fromEvaluationResult(
222225
result,

src/test/java/com/flagsmith/FlagsmithClientTest.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.flagsmith.exceptions.FlagsmithClientError;
2121
import com.flagsmith.exceptions.FlagsmithRuntimeError;
2222
import com.flagsmith.flagengine.EvaluationContext;
23+
import com.flagsmith.flagengine.EvaluationResult;
2324
import com.flagsmith.interfaces.FlagsmithCache;
2425
import com.flagsmith.models.BaseFlag;
2526
import com.flagsmith.models.DefaultFlag;
@@ -47,11 +48,13 @@
4748
import okhttp3.ResponseBody;
4849
import okhttp3.mock.MockInterceptor;
4950
import okio.Buffer;
51+
import com.flagsmith.flagengine.Engine;
5052
import org.junit.jupiter.api.Test;
5153
import org.junit.jupiter.params.ParameterizedTest;
5254
import org.junit.jupiter.params.provider.Arguments;
5355
import org.junit.jupiter.params.provider.MethodSource;
5456
import org.mockito.ArgumentCaptor;
57+
import org.mockito.MockedStatic;
5558
import org.mockito.Mockito;
5659
import org.mockito.invocation.Invocation;
5760
import org.slf4j.Logger;
@@ -776,6 +779,49 @@ public void testLocalEvaluation_ReturnsIdentityOverrides() throws FlagsmithClien
776779
assertEquals(flagsWithOverride.getFeatureValue("some_feature"), "overridden-value");
777780
}
778781

782+
@Test
783+
public void testLocalEvaluation_getEnvironmentFlags_NoTargeting() throws FlagsmithClientError {
784+
// Given
785+
EvaluationContext evaluationContext = FlagsmithTestHelper.evaluationContext();
786+
EvaluationResult evaluationResult = Engine.getEvaluationResult(
787+
new EvaluationContext(evaluationContext)
788+
.withSegments(null)
789+
);
790+
791+
FlagsmithConfig config = FlagsmithConfig.newBuilder().withLocalEvaluation(true).build();
792+
793+
FlagsmithApiWrapper mockedApiWrapper = mock(FlagsmithApiWrapper.class);
794+
when(mockedApiWrapper.getEvaluationContext())
795+
.thenReturn(evaluationContext);
796+
when(mockedApiWrapper.getConfig()).thenReturn(config);
797+
798+
FlagsmithClient client = FlagsmithClient.newBuilder()
799+
.withFlagsmithApiWrapper(mockedApiWrapper)
800+
.withConfiguration(config)
801+
.setApiKey("ser.dummy-key")
802+
.build();
803+
804+
// When
805+
try (MockedStatic<Engine> mockedEngine = mockStatic(Engine.class)) {
806+
mockedEngine.when(
807+
() -> Engine.getEvaluationResult(
808+
new EvaluationContext(evaluationContext)
809+
.withSegments(null)
810+
)
811+
).thenReturn(evaluationResult);
812+
813+
client.getEnvironmentFlags();
814+
815+
// Then
816+
mockedEngine.verify(
817+
() -> Engine.getEvaluationResult(
818+
new EvaluationContext(evaluationContext)
819+
.withSegments(null)
820+
)
821+
);
822+
}
823+
}
824+
779825
@Test
780826
public void testGetEnvironmentFlags_UsesDefaultFlags_IfLocalEvaluationEnvironmentNull()
781827
throws FlagsmithClientError {

0 commit comments

Comments
 (0)