Package org.togglz.core.util

Source Code of org.togglz.core.util.FeatureMapTest

package org.togglz.core.util;

import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.junit.Test;
import org.mockito.Matchers;
import org.togglz.core.Feature;
import org.togglz.core.manager.FeatureManager;

public class FeatureMapTest {

    @Test
    public void canBootstrapViaConstructor() {
        FeatureManager featureManager = mock(FeatureManager.class);
        Set<Feature> features = new HashSet<Feature>();
        String name1 = "Feature 1";
        String name2 = "Feature 2";
        Feature feature1 = mock(Feature.class, name1);
        Feature feature2 = mock(Feature.class, name2);
        features.add(feature1);
        features.add(feature2);
        when(featureManager.getFeatures()).thenReturn(features);
        when(feature1.name()).thenReturn(name1);
        when(feature2.name()).thenReturn(name2);
        when(featureManager.isActive(featureNamed(name1))).thenReturn(true);
        when(featureManager.isActive(featureNamed(name2))).thenReturn(false);
        Map<Object, Boolean> map = new FeatureMap(featureManager);
        assertThat(map.size(), equalTo(2));
        assertThat(map.isEmpty(), is(false));
        assertThat(map.get(name1), equalTo(true));
        assertThat(map.get(name2), equalTo(false));
        assertThat(map.get("unknown"), equalTo(false));
    }

    @Test
    public void shouldReturnCorrectSize() {

        List<Feature> features = Arrays.<Feature>asList(
            new NamedFeature("f1"),
            new NamedFeature("f2")
            );

        FeatureManager featureManager = mock(FeatureManager.class);
        when(featureManager.getFeatures()).thenReturn(new HashSet<Feature>(features));

        FeatureMap map = new FeatureMap(featureManager);

        assertThat(map).hasSize(2);

    }

    @Test
    public void shouldSupportLookupByFeatureName() {

        FeatureManager featureManager = mock(FeatureManager.class);
        when(featureManager.isActive(featureNamed("test"))).thenReturn(true);

        FeatureMap map = new FeatureMap(featureManager);

        assertThat(map.get("test")).isEqualTo(true);
        assertThat(map.get("other")).isEqualTo(false);

    }

    @Test
    public void shouldSupportLookupByFeatureInstance() {

        FeatureManager featureManager = mock(FeatureManager.class);
        when(featureManager.isActive(featureNamed("test"))).thenReturn(true);

        FeatureMap map = new FeatureMap(featureManager);

        assertThat(map.get(new NamedFeature("test"))).isEqualTo(true);
        assertThat(map.get(new NamedFeature("other"))).isEqualTo(false);

    }

    private Feature featureNamed(final String name) {

        return Matchers.argThat(new BaseMatcher<Feature>() {

            @Override
            public boolean matches(Object obj) {
                if (obj instanceof Feature) {
                    return ((Feature) obj).name().equals(name);
                }
                return false;
            }

            @Override
            public void describeTo(Description desc) {
                desc.appendText("Does not match: " + name);
            }
        });

    }

}
TOP

Related Classes of org.togglz.core.util.FeatureMapTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.