Skip to content

Commit 534cf64

Browse files
committed
add unit tests for getFeatureVariableString calling through to internal support for feature variable accessors
1 parent e41b2a0 commit 534cf64

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

core-api/src/test/java/com/optimizely/ab/OptimizelyTest.java

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2534,6 +2534,102 @@ public void isFeatureEnabledReturnsTrueAndDispatchesEventWhenUserIsBucketedIntoA
25342534
verify(mockEventHandler, times(1)).dispatchEvent(any(LogEvent.class));
25352535
}
25362536

2537+
/**
2538+
* Verify {@link Optimizely#getFeatureVariableString(String, String, String)}
2539+
* calls through to {@link Optimizely#getFeatureVariableString(String, String, String, Map<String, String>)}
2540+
* and returns null
2541+
* when {@link Optimizely#getFeatureVariableValueForType(String, String, String, Map, LiveVariable.VariableType)}
2542+
* returns null
2543+
* @throws ConfigParseException
2544+
*/
2545+
@Test
2546+
public void getFeatureVariableStringReturnsNullFromInternal() throws ConfigParseException {
2547+
String featureKey = "featureKey";
2548+
String variableKey = "variableKey";
2549+
2550+
Optimizely spyOptimizely = spy(Optimizely.builder(validDatafile, mockEventHandler)
2551+
.withConfig(validProjectConfig)
2552+
.build());
2553+
2554+
doReturn(null).when(spyOptimizely).getFeatureVariableValueForType(
2555+
eq(featureKey),
2556+
eq(variableKey),
2557+
eq(genericUserId),
2558+
eq(Collections.<String, String>emptyMap()),
2559+
eq(LiveVariable.VariableType.STRING)
2560+
);
2561+
2562+
assertNull(spyOptimizely.getFeatureVariableString(
2563+
featureKey,
2564+
variableKey,
2565+
genericUserId
2566+
));
2567+
2568+
verify(spyOptimizely).getFeatureVariableString(
2569+
eq(featureKey),
2570+
eq(variableKey),
2571+
eq(genericUserId),
2572+
eq(Collections.<String, String>emptyMap())
2573+
);
2574+
}
2575+
2576+
/**
2577+
* Verify {@link Optimizely#getFeatureVariableString(String, String, String)}
2578+
* calls through to {@link Optimizely#getFeatureVariableString(String, String, String, Map)}
2579+
* and both return the value returned from
2580+
* {@link Optimizely#getFeatureVariableValueForType(String, String, String, Map, LiveVariable.VariableType)}.
2581+
* @throws ConfigParseException
2582+
*/
2583+
@Test
2584+
public void getFeatureVariableStringReturnsWhatInternalReturns() throws ConfigParseException {
2585+
String featureKey = "featureKey";
2586+
String variableKey = "variableKey";
2587+
String valueNoAttributes = "valueNoAttributes";
2588+
String valueWithAttributes = "valueWithAttributes";
2589+
Map<String, String> attributes = Collections.singletonMap("key", "value");
2590+
2591+
Optimizely spyOptimizely = spy(Optimizely.builder(validDatafile, mockEventHandler)
2592+
.withConfig(validProjectConfig)
2593+
.build());
2594+
2595+
2596+
doReturn(valueNoAttributes).when(spyOptimizely).getFeatureVariableValueForType(
2597+
eq(featureKey),
2598+
eq(variableKey),
2599+
eq(genericUserId),
2600+
eq(Collections.<String, String>emptyMap()),
2601+
eq(LiveVariable.VariableType.STRING)
2602+
);
2603+
2604+
doReturn(valueWithAttributes).when(spyOptimizely).getFeatureVariableValueForType(
2605+
eq(featureKey),
2606+
eq(variableKey),
2607+
eq(genericUserId),
2608+
eq(attributes),
2609+
eq(LiveVariable.VariableType.STRING)
2610+
);
2611+
2612+
assertEquals(valueNoAttributes, spyOptimizely.getFeatureVariableString(
2613+
featureKey,
2614+
variableKey,
2615+
genericUserId
2616+
));
2617+
2618+
verify(spyOptimizely).getFeatureVariableString(
2619+
eq(featureKey),
2620+
eq(variableKey),
2621+
eq(genericUserId),
2622+
eq(Collections.<String, String>emptyMap())
2623+
);
2624+
2625+
assertEquals(valueWithAttributes, spyOptimizely.getFeatureVariableString(
2626+
featureKey,
2627+
variableKey,
2628+
genericUserId,
2629+
attributes
2630+
));
2631+
}
2632+
25372633
//======== Helper methods ========//
25382634

25392635
private Experiment createUnknownExperiment() {

0 commit comments

Comments
 (0)