package hudson.plugins.analysis.collector;
import static junit.framework.Assert.*;
import hudson.plugins.analysis.graph.EmptyGraph;
import hudson.plugins.analysis.graph.GraphConfiguration;
import hudson.plugins.analysis.graph.PriorityGraph;
import net.sf.json.JSONObject;
import org.junit.Test;
import org.mortbay.util.ajax.JSON;
import com.google.common.collect.Sets;
/**
* Tests the class {@link AnalysisGraphConfiguration}.
*
* @author Ulli Hafner
*/
public class AnalysisGraphConfigurationTest {
/** Error message. */
private static final String WRONG_VALUE_OF_DEACTIVATE_PROPERTY = "Wrong value of deactivate property";
/** Error message. */
private static final String VALID_CONFIGURATION_REJECTED = "Valid configuration rejected";
/**
* Asserts that the provided initialization value is correctly rejected and
* the configuration is initialized by default values.
*
* @param initializationValue
* initialization value
*/
private void assertInvalidInitializationValue(final String initializationValue) {
GraphConfiguration configuration = createConfigurationUnderTest();
assertFalse("Invalid configuration accepted.", configuration.initializeFrom(initializationValue));
assertTrue("Invalid configuration state.", configuration.isDefault());
}
/**
* Creates the configuration under test.
*
* @return the configuration under test
*/
private AnalysisGraphConfiguration createConfigurationUnderTest() {
return new AnalysisGraphConfiguration(Sets.newHashSet(new PriorityGraph(), new OriginGraph(), new EmptyGraph()));
}
/**
* Ensures that invalid string values are rejected.
*/
@Test
public void testInvalidConfiguations() {
assertInvalidInitializationValue("50!50!12!13!PRIORITY");
assertInvalidInitializationValue("50!50!12!13!ORIGIN");
assertInvalidInitializationValue("50!50!12!13!ORIGIN!2");
assertInvalidInitializationValue("50!50!12!13!ORIGIN!q");
}
/**
* Ensures that a valid configuration is correctly parsed.
*/
@Test
public void testValidConfiguations() {
AnalysisGraphConfiguration configuration = createConfigurationUnderTest();
assertTrue(VALID_CONFIGURATION_REJECTED, configuration.initializeFrom("50!50!12!13!ORIGIN!1!0"));
assertFalse(WRONG_VALUE_OF_DEACTIVATE_PROPERTY, configuration.canDeacticateOtherTrendGraphs());
AnalysisGraphConfiguration other = createConfigurationUnderTest();
assertTrue(VALID_CONFIGURATION_REJECTED, other.initializeFrom(configuration.serializeToString()));
assertEquals("Wrong serialization", configuration, other);
assertTrue(VALID_CONFIGURATION_REJECTED, configuration.initializeFrom("50!50!12!13!ORIGIN!1!1"));
assertTrue(WRONG_VALUE_OF_DEACTIVATE_PROPERTY, configuration.canDeacticateOtherTrendGraphs());
}
/**
* Ensures that a valid JSON configuration is correctly parsed.
*/
@Test
public void testValidJSONConfiguations() {
Object enabled = JSON.parse("{\"\":\"\",\"buildCountString\":\"\",\"useBuildDateAsDomain\":true,\"canDeacticateOtherTrendGraphs\":true,\"dayCountString\":\"\",\"graphType\":\"ORIGIN\",\"height\":\"200\",\"width\":\"500\"}");
JSONObject jsonObject = JSONObject.fromObject(enabled);
AnalysisGraphConfiguration configuration = createConfigurationUnderTest();
assertTrue(VALID_CONFIGURATION_REJECTED, configuration.initializeFrom(jsonObject));
assertTrue(WRONG_VALUE_OF_DEACTIVATE_PROPERTY, configuration.canDeacticateOtherTrendGraphs());
Object disabled = JSON.parse("{\"\":\"\",\"buildCountString\":\"\",\"useBuildDateAsDomain\":true,\"canDeacticateOtherTrendGraphs\":false,\"dayCountString\":\"\",\"graphType\":\"ORIGIN\",\"height\":\"200\",\"width\":\"500\"}");
jsonObject = JSONObject.fromObject(disabled);
assertTrue(VALID_CONFIGURATION_REJECTED, configuration.initializeFrom(jsonObject));
assertFalse(WRONG_VALUE_OF_DEACTIVATE_PROPERTY, configuration.canDeacticateOtherTrendGraphs());
}
}