Package org.constretto.internal.provider

Source Code of org.constretto.internal.provider.DynamicReconfiguringTagsTest$ConfiguredClass

package org.constretto.internal.provider;

import org.constretto.ConstrettoBuilder;
import org.constretto.ConstrettoConfiguration;
import org.constretto.annotation.Configuration;
import org.constretto.annotation.Configure;
import org.constretto.model.ClassPathResource;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

/**
* @author <a href="mailto:kaare.nilsen@arktekk.no">Kaare Nilsen</a>
*/
public class DynamicReconfiguringTagsTest {
    private ConstrettoConfiguration config;

    @Before
    public void createConfiguration() {
        config = new ConstrettoBuilder()
                .createPropertiesStore()
                .addResource(new ClassPathResource("dynamic.properties"))
                .done().getConfiguration();
    }

    @Test
    public void whenAppendingTagsRuntimeVariablesShouldBeResolvedCorrectlyWhenUsingJavaApi() {
        assertEquals("default value", config.evaluateToString("stagedKey"));
        config.appendTag("test");
        assertEquals("test value", config.evaluateToString("stagedKey"));
        config.appendTag("prod");
        assertEquals("test value", config.evaluateToString("stagedKey"));
    }


    @Test
    public void whenPrependingTagsRuntimeVariablesShouldBeResolvedCorrectlyWhenUsingJavaApi() {
        assertEquals("default value", config.evaluateToString("stagedKey"));
        config.prependTag("test");
        assertEquals("test value", config.evaluateToString("stagedKey"));
        config.prependTag("prod");
        assertEquals("prod value", config.evaluateToString("stagedKey"));
    }

    @Test
    public void whenResetingTagsItResolvesBackToOriginalTags() {
        ConstrettoConfiguration configuration = new ConstrettoBuilder()
                .createPropertiesStore().addResource(new ClassPathResource("dynamic.properties")).done()
                .addCurrentTag("test")
                .getConfiguration();
        assertEquals("test value", configuration.evaluateToString("stagedKey"));
        configuration.prependTag("prod");
        assertEquals("prod value", configuration.evaluateToString("stagedKey"));
        configuration.resetTags(true);
        assertEquals("test value", configuration.evaluateToString("stagedKey"));
    }


    @Test
    public void whenClearingTagsItResolvesBackToDefaultValues() {
        ConstrettoConfiguration configuration = new ConstrettoBuilder()
                .createPropertiesStore().addResource(new ClassPathResource("dynamic.properties")).done()
                .addCurrentTag("test")
                .getConfiguration();
        assertEquals("test value", configuration.evaluateToString("stagedKey"));
        configuration.prependTag("prod");
        assertEquals("prod value", configuration.evaluateToString("stagedKey"));
        configuration.clearTags(true);
        assertEquals("default value", configuration.evaluateToString("stagedKey"));
    }

    @Test
    public void whenAppendingTagsRuntimeObjectsInjectedWithConfigurationShouldBeResolvedCorrectly() throws InterruptedException {
        ConfiguredClass configuredClass = new ConfiguredClass();
        config.on(configuredClass);
        assertEquals("default value", configuredClass.stagedKey);
        assertEquals("default", configuredClass.stagedVariable);
        config.appendTag("test");
        assertEquals("test value", configuredClass.stagedKey);
        assertEquals("test", configuredClass.stagedVariable);
        config.appendTag("prod");
        assertEquals("test value", configuredClass.stagedKey);
        assertEquals("test", configuredClass.stagedVariable);
        config.removeTag("test");
        assertEquals("prod value", configuredClass.stagedKey);
        assertEquals("prod", configuredClass.stagedVariable);
        config.removeTag("prod");
        assertEquals("default value", configuredClass.stagedKey);
        assertEquals("default", configuredClass.stagedVariable);
        configuredClass = null;
        config.appendTag("linux");
        Assert.assertNull(configuredClass);
    }


    private class ConfiguredClass {
        @Configuration
        private String stagedVariable;
        private String stagedKey;


        @Configure
        public void configure(String stagedKey) {
            this.stagedKey = stagedKey;
        }
    }
}
TOP

Related Classes of org.constretto.internal.provider.DynamicReconfiguringTagsTest$ConfiguredClass

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.