package org.togglz.appengine.activation;
import com.google.appengine.api.utils.SystemProperty;
import com.google.appengine.tools.development.testing.LocalServiceTestHelper;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.togglz.core.Feature;
import org.togglz.core.repository.FeatureState;
import org.togglz.core.user.SimpleFeatureUser;
public class ApplicationVersionActivationStrategyTest {
private static final String JOHN = "john";
private final LocalServiceTestHelper helper = new LocalServiceTestHelper();
private static final String CURRENT_VERSION = "beta.141242134213";
@Before
public void setup() {
SystemProperty.applicationVersion.set(CURRENT_VERSION);
helper.setUp();
}
@Test
public void shouldReturnFalseForEmptyVersion() {
ApplicationVersionActivationStrategy strategy = new ApplicationVersionActivationStrategy();
FeatureState state = aVersionState("");
boolean active = strategy.isActive(state, aFeatureUser(JOHN));
Assert.assertFalse(active);
}
@Test
public void shouldReturnFalseForNullVersion() {
ApplicationVersionActivationStrategy strategy = new ApplicationVersionActivationStrategy();
FeatureState state = aVersionState(null);
boolean active = strategy.isActive(state, aFeatureUser(JOHN));
Assert.assertFalse(active);
}
@Test
public void shouldReturnFalseWhenCurrentVersionCannotBeResolved() {
SystemProperty.applicationVersion.set("");
ApplicationVersionActivationStrategy strategy = new ApplicationVersionActivationStrategy();
FeatureState state = aVersionState(CURRENT_VERSION);
boolean active = strategy.isActive(state, aFeatureUser(JOHN));
Assert.assertFalse(active);
}
@Test
public void shouldReturnTrueWhenMatchesServerCurrentVersion() {
ApplicationVersionActivationStrategy strategy = new ApplicationVersionActivationStrategy();
FeatureState state = aVersionState(CURRENT_VERSION);
boolean active = strategy.isActive(state, aFeatureUser(JOHN));
Assert.assertTrue(active);
}
@Test
public void shouldReturnTrueWhenAtLeastOneOfTheVersionsMatchServerCurrentVersion() {
ApplicationVersionActivationStrategy strategy = new ApplicationVersionActivationStrategy();
FeatureState state = aVersionState(CURRENT_VERSION + ",alpha,dev,uat");
boolean active = strategy.isActive(state, aFeatureUser(JOHN));
Assert.assertTrue(active);
}
@Test
public void shouldReturnFalseWhenNoneOfTheVersionsMatchTheServerCurrentVersion() {
ApplicationVersionActivationStrategy strategy = new ApplicationVersionActivationStrategy();
FeatureState state = aVersionState("test,alpha,dev,uat,rc1");
boolean active = strategy.isActive(state, aFeatureUser(JOHN));
Assert.assertFalse(active);
}
private FeatureState aVersionState(String lang) {
return new FeatureState(ScriptFeature.FEATURE)
.setStrategyId(ApplicationVersionActivationStrategy.ID)
.setParameter(ApplicationVersionActivationStrategy.PARAM_VERSIONS, lang);
}
private SimpleFeatureUser aFeatureUser(String string) {
return new SimpleFeatureUser(string);
}
private enum ScriptFeature implements Feature {
FEATURE;
}
}