package org.togglz.core.manager;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.togglz.core.Feature;
import org.togglz.core.activation.ActivationStrategyProvider;
import org.togglz.core.activation.DefaultActivationStrategyProvider;
import org.togglz.core.activation.Parameter;
import org.togglz.core.repository.FeatureState;
import org.togglz.core.spi.ActivationStrategy;
import org.togglz.core.user.FeatureUser;
public class FeatureManagerBuilderTest {
@Test
public void shouldAddStrategyIfUsingDefaultProvider() {
DefaultActivationStrategyProvider provider = new DefaultActivationStrategyProvider();
FeatureManagerBuilder.begin()
.featureEnum(Features.class)
.activationStrategyProvider(provider)
.activationStrategy(new CustomActivationStrategy())
.build();
assertThat(provider.getActivationStrategies())
.extracting("id")
.contains(CustomActivationStrategy.class.getSimpleName());
}
@Test(expected = IllegalStateException.class)
public void shouldFailIfAddingStrategyWithCustomProvider() {
CustomStrategyProvider provider = new CustomStrategyProvider();
FeatureManagerBuilder.begin()
.featureEnum(Features.class)
.activationStrategyProvider(provider)
.activationStrategy(new CustomActivationStrategy())
.build();
}
private enum Features implements Feature {
SOME_FEATURE
}
private static class CustomStrategyProvider implements ActivationStrategyProvider {
@Override
public List<ActivationStrategy> getActivationStrategies() {
return Collections.emptyList();
}
}
private static class CustomActivationStrategy implements ActivationStrategy {
@Override
public boolean isActive(FeatureState featureState, FeatureUser user) {
return false;
}
@Override
public Parameter[] getParameters() {
return new Parameter[0];
}
@Override
public String getName() {
return getId();
}
@Override
public String getId() {
return this.getClass().getSimpleName();
}
};
}