Skip to content

Commit 739de51

Browse files
committed
test: record an exposure for the control arm under local evaluation
1 parent 82e730d commit 739de51

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import org.junit.jupiter.api.Test;
5858
import org.junit.jupiter.params.ParameterizedTest;
5959
import org.junit.jupiter.params.provider.Arguments;
60+
import org.junit.jupiter.params.provider.CsvSource;
6061
import org.junit.jupiter.params.provider.MethodSource;
6162
import org.mockito.ArgumentCaptor;
6263
import org.mockito.Mockito;
@@ -1202,21 +1203,26 @@ private static FlagsmithClient localExperimentClient(EventProcessor processor) {
12021203
return client;
12031204
}
12041205

1205-
@Test
1206-
public void testGetExperimentFlagRecordsAnExposureWithLocalEvaluationWhenEnrolled()
1206+
@ParameterizedTest
1207+
@CsvSource({
1208+
"user-1, new checkout, treatment",
1209+
"user-3, control, control"
1210+
})
1211+
public void testGetExperimentFlagRecordsAnExposureWithLocalEvaluationWhenEnrolled(
1212+
String identifier, String expectedValue, String expectedVariant)
12071213
throws FlagsmithClientError {
12081214
EventProcessor processor = mock(EventProcessor.class);
12091215
FlagsmithClient client = localExperimentClient(processor);
12101216
Map<String, Object> traits = Collections.singletonMap("plan", "premium");
12111217

1212-
Flag flag = (Flag) client.getExperimentFlag("checkout", "user-1", traits);
1218+
Flag flag = (Flag) client.getExperimentFlag("checkout", identifier, traits);
12131219

1214-
assertEquals("new checkout", flag.getValue());
1215-
assertEquals("treatment", flag.getVariant());
1220+
assertEquals(expectedValue, flag.getValue());
1221+
assertEquals(expectedVariant, flag.getVariant());
12161222
assertEquals(42, flag.getExperiment().getId());
12171223
assertEquals("Checkout experiment", flag.getExperiment().getName());
12181224
assertEquals(Boolean.TRUE, flag.getExperiment().getInExperiment());
1219-
verify(processor).trackExposureEvent("checkout", "user-1", "treatment", traits,
1225+
verify(processor).trackExposureEvent("checkout", identifier, expectedVariant, traits,
12201226
Collections.singletonMap("experiment_id", 42));
12211227
}
12221228

‎src/test/java/com/flagsmith/FlagsmithTestHelper.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ public static String getIdentitiesFlagsWithExperiment() {
456456

457457
/**
458458
* An environment document running an experiment on {@code checkout}. Its rollout segment is
459-
* identities on the premium plan, who are served the {@code treatment} variant.
459+
* identities on the premium plan, split evenly between {@code control} and {@code treatment}.
460460
* {@code user_overridden} has an identity override for {@code checkout}, and {@code plain} has no
461461
* experiment.
462462
*/
@@ -473,7 +473,7 @@ public static String getEnvironmentDocumentWithExperiment() {
473473
+ " \"feature_states\": [{\"id\": 2, \"featurestate_uuid\": \"c2c2c2c2-c2c2-c2c2-c2c2-c2c2c2c2c2c2\",\n"
474474
+ " \"feature\": " + checkout + ", \"feature_state_value\": \"control\", \"enabled\": true,\n"
475475
+ " \"feature_segment\": {\"priority\": 0},\n"
476-
+ " \"multivariate_feature_state_values\": [{\"id\": 3, \"percentage_allocation\": 100,\n"
476+
+ " \"multivariate_feature_state_values\": [{\"id\": 3, \"percentage_allocation\": 50,\n"
477477
+ " \"mv_fs_value_uuid\": \"3e3e3e3e-3e3e-3e3e-3e3e-3e3e3e3e3e3e\",\n"
478478
+ " \"multivariate_feature_option\": {\"id\": 3, \"value\": \"new checkout\", \"key\": \"treatment\"}}],\n"
479479
+ " \"metadata\": {\"experiment\": " + String.format(experiment, "true") + "}}]}]},\n"

0 commit comments

Comments
 (0)