package de.otto.edison.testsupport.togglz; import org.togglz.core.Feature; import org.togglz.core.context.FeatureContext; import org.togglz.core.repository.FeatureState; import org.togglz.core.util.FeatureAnnotations; import static org.togglz.core.context.FeatureContext.clearCache; import static org.togglz.core.context.FeatureContext.getFeatureManager; public class FeatureManagerSupport { public static void allEnabledFeatureConfig(final Class<? extends Feature> featureClass) { TestFeatureManager featureManager = new TestFeatureManager(featureClass); enableAllFeaturesThatAreOkToEnableByDefaultInAllTests(featureClass,featureManager); TestFeatureManagerProvider.setFeatureManager(featureManager); clearCache(); } public static void allDisabledFeatureConfig(final Class<? extends Feature> featureClass) { TestFeatureManager featureManager = new TestFeatureManager(featureClass); for (Feature feature : featureClass.getEnumConstants()) { featureManager.disable(feature); } TestFeatureManagerProvider.setFeatureManager(featureManager); clearCache(); } public static void disable(final Feature feature) { FeatureContext.getFeatureManager().setFeatureState(new FeatureState(feature, false)); } private static void enableAllFeaturesThatAreOkToEnableByDefaultInAllTests(final Class<? extends Feature> featureClass, final TestFeatureManager featureManager) { for (Feature feature : featureClass.getEnumConstants()) { if (shouldRunInTests(feature)) { featureManager.enable(feature); } } } public static boolean shouldRunInTests(Feature feature) { String label = FeatureAnnotations.getLabel(feature); return !label.contains("[inactiveInTests]"); } public static void enable(final Feature feature) { getFeatureManager().setFeatureState(new FeatureState(feature, true)); } }