package org.togglz.core.activation;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.togglz.core.repository.FeatureState;
import org.togglz.core.spi.ActivationStrategy;
import org.togglz.core.user.FeatureUser;
import java.util.ArrayList;
import java.util.List;
public class DefaultActivationStrategyProviderTest {
private DefaultActivationStrategyProvider provider = new DefaultActivationStrategyProvider();
@Test
public void shouldLoadDefaultStrategies() {
assertThat(provider.getActivationStrategies())
.extracting("id")
.contains(UsernameActivationStrategy.ID)
.contains(GradualActivationStrategy.ID)
.contains(ScriptEngineActivationStrategy.ID)
.contains(ReleaseDateActivationStrategy.ID)
.contains(ServerIpActivationStrategy.ID)
.contains(UserRoleActivationStrategy.ID);
}
@Test
public void shouldNotContainCustomStrategyIfNotAdded() {
assertThat(provider.getActivationStrategies())
.extracting("id")
.doesNotContain(CustomActivationStrategy.class.getSimpleName())
.doesNotContain(AnotherCustomActivationStrategy.class.getSimpleName());
}
@Test
public void shouldContainCustomStrategyIfAddedBefore() {
provider.addActivationStrategy(new CustomActivationStrategy());
assertThat(provider.getActivationStrategies())
.extracting("id")
.contains(CustomActivationStrategy.class.getSimpleName());
}
@Test
public void shouldContainCustomStrategyIfAddedMultipleBefore() {
List<ActivationStrategy> strategies = new ArrayList<ActivationStrategy>();
strategies.add(new CustomActivationStrategy());
strategies.add(new AnotherCustomActivationStrategy());
provider.addActivationStrategies(strategies);
assertThat(provider.getActivationStrategies())
.extracting("id")
.contains(CustomActivationStrategy.class.getSimpleName())
.contains(AnotherCustomActivationStrategy.class.getSimpleName());
}
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();
}
}
private static class AnotherCustomActivationStrategy 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();
}
}
}