package com.tacitknowledge.slowlight.embedded.config.json;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import org.junit.Before;
import org.junit.Test;
import com.tacitknowledge.slowlight.embedded.config.MainConfig;
/**
* @author Alexandr Donciu (adonciu@tacitknowledge.com)
*/
public class JSONConfigBuilderTest
{
private JSONConfigBuilder jsonConfigBuilder;
@Before
public void setup()
{
System.clearProperty(JSONConfigBuilder.PROPERTY_CONFIG_FILE_NAME);
jsonConfigBuilder = new JSONConfigBuilder();
}
@Test
public void configBuilderShouldLoadConfigFileBySpecifiedSystemProperty()
{
System.setProperty(JSONConfigBuilder.PROPERTY_CONFIG_FILE_NAME, "test-slowlight-embedded.config");
final MainConfig mainConfig = jsonConfigBuilder.getConfig();
assertThat(mainConfig, is(notNullValue()));
assertThat(mainConfig.getRules().size(), is(equalTo(2)));
assertThat(mainConfig.getRules().get(0).getServiceDemandTime(), is(notNullValue()));
assertThat(mainConfig.getRules().get(0).getServiceTimeout(), is(notNullValue()));
assertThat(mainConfig.getRules().get(0).getPassRate(), is(notNullValue()));
assertThat(mainConfig.getRules().get(0).getThreads(), is(notNullValue()));
assertThat(mainConfig.getRules().get(0).getApplyTo().size(), is(equalTo(2)));
assertThat(mainConfig.getRules().get(0).getRandomExceptions().size(),
is(equalTo(2)));
}
@Test(expected = IllegalArgumentException.class)
public void configBuilderShouldThrowExceptionIfCannotLoadConfigFile()
{
System.setProperty(JSONConfigBuilder.PROPERTY_CONFIG_FILE_NAME, "non-existent-config");
jsonConfigBuilder.getConfig();
}
@Test
public void configBuilderShouldReturnDefaultConfigFileNameIfNoSystemPropertySpecified()
{
final String configFileName = jsonConfigBuilder.getConfigFileName();
assertThat(configFileName, is(equalTo(JSONConfigBuilder.DEFAULT_CONFIG_FILE_NAME)));
}
}