Skip to content

Commit 3c9c0f6

Browse files
committed
remove Delegating strategy and pass context to isActive
1 parent 6a324f4 commit 3c9c0f6

6 files changed

Lines changed: 22 additions & 39 deletions

File tree

src/main/java/com/hubspot/jinjava/features/DateTimeFeatureActivationStrategy.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.hubspot.jinjava.features;
22

3+
import com.hubspot.jinjava.interpret.Context;
34
import java.time.LocalDateTime;
45

56
public class DateTimeFeatureActivationStrategy implements FeatureActivationStrategy {
@@ -14,7 +15,7 @@ private DateTimeFeatureActivationStrategy(LocalDateTime activateAt) {
1415
}
1516

1617
@Override
17-
public boolean isActive() {
18+
public boolean isActive(Context context) {
1819
return LocalDateTime.now().isAfter(activateAt);
1920
}
2021

src/main/java/com/hubspot/jinjava/features/DelegatingFeatureActivationStrategy.java

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.hubspot.jinjava.features;
22

3+
import com.hubspot.jinjava.interpret.Context;
4+
35
public interface FeatureActivationStrategy {
4-
boolean isActive();
6+
boolean isActive(Context context);
57
}
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package com.hubspot.jinjava.features;
22

33
public class FeatureStrategies {
4-
public static final FeatureActivationStrategy INACTIVE = DelegatingFeatureActivationStrategy.of(
5-
() -> false
6-
);
7-
public static final FeatureActivationStrategy ACTIVE = DelegatingFeatureActivationStrategy.of(
8-
() -> true
9-
);
4+
public static final FeatureActivationStrategy INACTIVE = c -> false;
5+
public static final FeatureActivationStrategy ACTIVE = c -> true;
106
}

src/main/java/com/hubspot/jinjava/features/Features.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package com.hubspot.jinjava.features;
22

3+
import com.hubspot.jinjava.interpret.Context;
4+
35
public class Features {
46
private final FeatureConfig featureConfig;
57

68
public Features(FeatureConfig featureConfig) {
79
this.featureConfig = featureConfig;
810
}
911

10-
public boolean isActive(String featureName) {
11-
return getActivationStrategy(featureName).isActive();
12+
public boolean isActive(String featureName, Context context) {
13+
return getActivationStrategy(featureName).isActive(context);
1214
}
1315

1416
public FeatureActivationStrategy getActivationStrategy(String featureName) {

src/test/java/com/hubspot/jinjava/FeaturesTest.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import com.hubspot.jinjava.features.DateTimeFeatureActivationStrategy;
6-
import com.hubspot.jinjava.features.DelegatingFeatureActivationStrategy;
76
import com.hubspot.jinjava.features.FeatureConfig;
87
import com.hubspot.jinjava.features.FeatureStrategies;
98
import com.hubspot.jinjava.features.Features;
9+
import com.hubspot.jinjava.interpret.Context;
1010
import java.time.LocalDateTime;
1111
import org.junit.Before;
1212
import org.junit.Test;
@@ -22,6 +22,8 @@ public class FeaturesTest {
2222

2323
private boolean delegateActive = false;
2424

25+
private Context context = new Context();
26+
2527
@Before
2628
public void setUp() throws Exception {
2729
features =
@@ -32,41 +34,41 @@ public void setUp() throws Exception {
3234
.add(ALWAYS_ON, FeatureStrategies.ACTIVE)
3335
.add(DATE_PAST, DateTimeFeatureActivationStrategy.of(LocalDateTime.MIN))
3436
.add(DATE_FUTURE, DateTimeFeatureActivationStrategy.of(LocalDateTime.MAX))
35-
.add(DELEGATING, DelegatingFeatureActivationStrategy.of(() -> delegateActive))
37+
.add(DELEGATING, d -> delegateActive)
3638
.build()
3739
);
3840
}
3941

4042
@Test
4143
public void itHasEnabledFeature() {
42-
assertThat(features.isActive(ALWAYS_ON)).isTrue();
44+
assertThat(features.isActive(ALWAYS_ON, context)).isTrue();
4345
}
4446

4547
@Test
4648
public void itDoesNotHaveDisabledFeature() {
47-
assertThat(features.isActive(ALWAYS_OFF)).isFalse();
49+
assertThat(features.isActive(ALWAYS_OFF, context)).isFalse();
4850
}
4951

5052
@Test
5153
public void itHasPastEnabledFeature() {
52-
assertThat(features.isActive(DATE_PAST)).isTrue();
54+
assertThat(features.isActive(DATE_PAST, context)).isTrue();
5355
}
5456

5557
@Test
5658
public void itDoesNotHaveFutureEnabledFeature() {
57-
assertThat(features.isActive(DATE_FUTURE)).isFalse();
59+
assertThat(features.isActive(DATE_FUTURE, context)).isFalse();
5860
}
5961

6062
@Test
6163
public void itUsesDelegate() {
6264
delegateActive = false;
63-
assertThat(features.isActive(DELEGATING)).isEqualTo(delegateActive);
65+
assertThat(features.isActive(DELEGATING, context)).isEqualTo(delegateActive);
6466
delegateActive = true;
65-
assertThat(features.isActive(DELEGATING)).isEqualTo(delegateActive);
67+
assertThat(features.isActive(DELEGATING, context)).isEqualTo(delegateActive);
6668
}
6769

6870
@Test
6971
public void itDefaultsToFalse() {
70-
assertThat(features.isActive("unknown")).isFalse();
72+
assertThat(features.isActive("unknown", context)).isFalse();
7173
}
7274
}

0 commit comments

Comments
 (0)