Skip to content

Commit

Permalink
feat: add support for variants in FakeUnleash
Browse files Browse the repository at this point in the history
  • Loading branch information
ivaosthu committed Feb 7, 2019
1 parent 9b046ef commit 99837c4
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 7 deletions.
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,20 +163,27 @@ Some examples on how to use it below:


```java
\\example 1
// example 1: everything on
FakeUnleash fakeUnleash = new FakeUnleash();
fakeUnleash.enableAll();

assertThat(fakeUnleash.isEnabled("unknown"), is(true));
assertThat(fakeUnleash.isEnabled("unknown2"), is(true));

\\example 2
// example 2
FakeUnleash fakeUnleash = new FakeUnleash();
fakeUnleash.enable("t1", "t2");

assertThat(fakeUnleash.isEnabled("t1"), is(true));
assertThat(fakeUnleash.isEnabled("t2"), is(true));
assertThat(fakeUnleash.isEnabled("unknown"), is(false));

// example 3: variants
FakeUnleash fakeUnleash = new FakeUnleash();
fakeUnleash.enable("t1", "t2");
fakeUnleash.setVariant("t1", new Variant("a", (String) null, true));

assertThat(fakeUnleash.getVariant("t1").getName(), is("a"));
```

Se more in [FakeUnleashTest.java](https://github.com/Unleash/unleash-client-java/blob/master/src/test/java/no/finn/unleash/FakeUnleashTest.java)
Expand Down
18 changes: 13 additions & 5 deletions src/main/java/no/finn/unleash/FakeUnleash.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public final class FakeUnleash implements Unleash {
private boolean enableAll = false;
private boolean disableAll = false;
private Map<String, Boolean> features = new HashMap<>();
private Map<String, Variant> variants = new HashMap<>();

@Override
public boolean isEnabled(String toggleName) {
Expand All @@ -29,22 +29,26 @@ public boolean isEnabled(String toggleName, boolean defaultSetting) {

@Override
public Variant getVariant(String toggleName, UnleashContext context) {
throw new IllegalStateException("Not implemented");
return getVariant(toggleName, Variant.DISABLED_VARIANT);
}

@Override
public Variant getVariant(String toggleName, UnleashContext context, Variant defaultValue) {
throw new IllegalStateException("Not implemented");
return getVariant(toggleName, defaultValue);
}

@Override
public Variant getVariant(String toggleName) {
throw new IllegalStateException("Not implemented");
return getVariant(toggleName, Variant.DISABLED_VARIANT);
}

@Override
public Variant getVariant(String toggleName, Variant defaultValue) {
throw new IllegalStateException("Not implemented");
if(isEnabled(toggleName) && variants.containsKey(toggleName)) {
return variants.get(toggleName);
} else {
return defaultValue;
}
}

@Override
Expand Down Expand Up @@ -87,4 +91,8 @@ public void reset(String... features) {
this.features.remove(name);
}
}

public void setVariant(String t1, Variant a) {
variants.put(t1, a);
}
}
18 changes: 18 additions & 0 deletions src/test/java/no/finn/unleash/FakeUnleashTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,22 @@ public void should_get_all_feature_names() {
assertTrue(fakeUnleash.getFeatureToggleNames().containsAll(expected));
}

@Test
public void should_get_variant() {
FakeUnleash fakeUnleash = new FakeUnleash();
fakeUnleash.enable("t1", "t2");
fakeUnleash.setVariant("t1", new Variant("a", (String) null, true));

assertThat(fakeUnleash.getVariant("t1").getName(), is("a"));
}

@Test
public void should_get_disabled_variant_when_toggle_is_disabled() {
FakeUnleash fakeUnleash = new FakeUnleash();
fakeUnleash.disable("t1", "t2");
fakeUnleash.setVariant("t1", new Variant("a", (String) null, true));

assertThat(fakeUnleash.getVariant("t1").getName(), is("disabled"));
}

}

0 comments on commit 99837c4

Please sign in to comment.