package slacknotifications.teamcity.settings;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.junit.Before;
import org.junit.Test;
import slacknotifications.testframework.util.ConfigLoaderUtil;
import java.io.File;
import java.io.IOException;
import static org.junit.Assert.*;
public class SlackNotificationConfigTest {
private static final String EMPTY_STRING = "";
private static final String CHECKED = "checked ";
SlackNotificationConfig slacknotificationAllEnabled;
SlackNotificationConfig slacknotificationAllDisabled;
SlackNotificationConfig slacknotificationDisabled;
SlackNotificationConfig slacknotificationMostEnabled;
SlackNotificationConfig slacknotificationCustomContent;
@Before
public void setup() throws JDOMException, IOException{
slacknotificationAllEnabled = ConfigLoaderUtil.getFirstSlackNotificationInConfig(new File("src/test/resources/project-settings-test-all-states-enabled.xml"));
slacknotificationAllDisabled = ConfigLoaderUtil.getFirstSlackNotificationInConfig(new File("src/test/resources/project-settings-test-all-states-disabled.xml"));
slacknotificationDisabled = ConfigLoaderUtil.getFirstSlackNotificationInConfig(new File("src/test/resources/project-settings-test-slacknotifications-disabled.xml"));
slacknotificationMostEnabled = ConfigLoaderUtil.getFirstSlackNotificationInConfig(new File("src/test/resources/project-settings-test-all-but-respchange-states-enabled.xml"));
slacknotificationCustomContent = ConfigLoaderUtil.getFirstSlackNotificationInConfig(new File("src/test/resources/project-settings-test-custom-content.xml"));
}
// private SlackNotificationConfig getFirstSlackNotificationInConfig(File f) throws JDOMException, IOException{
// Element fileAsElement = ConfigLoaderUtil.getFullConfigElement(f);
// assertTrue("One and only one slacknotifications expected when loading test config from file : " + f.getName(), fileAsElement.getChild("slackNotifications").getChildren("slacknotifications").size() == 1);
// return new SlackNotificationConfig((Element) fileAsElement.getChild("slackNotifications").getChildren("slacknotifications").get(0));
// }
@Test
public void testGetEnabled() {
assertTrue(slacknotificationAllEnabled.getEnabled());
assertTrue(slacknotificationAllDisabled.getEnabled());
assertFalse(slacknotificationDisabled.getEnabled());
}
@Test
public void testSetEnabled() {
assertTrue(slacknotificationAllEnabled.getEnabled());
slacknotificationAllEnabled.setEnabled(false);
assertFalse(slacknotificationAllEnabled.getEnabled());
}
@Test
public void testGetBuildStates() {
assertTrue(slacknotificationAllEnabled.getBuildStates().allEnabled());
assertFalse(slacknotificationAllDisabled.getBuildStates().allEnabled());
assertFalse(slacknotificationDisabled.getBuildStates().allEnabled());
}
@Test
public void testGetToken() {
assertTrue(slacknotificationAllEnabled.getToken().equals("hook.slack.com"));
}
@Test
public void testGetUrl() {
assertTrue(slacknotificationAllEnabled.getChannel().equals("http://localhost/test"));
}
@Test
public void testSetUrl() {
assertTrue(slacknotificationAllEnabled.getChannel().equals("http://localhost/test"));
slacknotificationAllEnabled.setChannel("a new url");
assertFalse(slacknotificationAllEnabled.getChannel().equals("http://localhost/test"));
assertTrue(slacknotificationAllEnabled.getChannel().equals("a new url"));
}
@Test
public void testGetUniqueKey() {
assertFalse(slacknotificationAllEnabled.getUniqueKey().equals(EMPTY_STRING));
}
@Test
public void testSetUniqueKey() {
String s = slacknotificationAllEnabled.getUniqueKey();
slacknotificationAllEnabled.setUniqueKey("SomethingElse");
assertFalse(slacknotificationAllEnabled.getUniqueKey().equals(s));
assertTrue(slacknotificationAllEnabled.getUniqueKey().equals("SomethingElse"));
}
@Test
public void testGetEnabledListAsString() {
assertTrue(slacknotificationAllEnabled.getEnabledListAsString().equals("All Build Events"));
assertTrue(slacknotificationAllDisabled.getEnabledListAsString().equals("None"));
assertTrue(slacknotificationMostEnabled.getEnabledListAsString().equals(" Build Started, Build Interrupted, Build Almost Completed, Build Failed, Build Successful"));
}
@Test
public void testGetSlackNotificationEnabledAsChecked() {
assertTrue(slacknotificationAllEnabled.getSlackNotificationEnabledAsChecked().equals(CHECKED));
assertTrue(slacknotificationAllDisabled.getSlackNotificationEnabledAsChecked().equals(CHECKED));
}
@Test
public void testGetStateAllAsChecked() {
assertTrue(slacknotificationAllEnabled.getStateAllAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateAllAsChecked().equals(CHECKED));
}
@Test
public void testGetStateBuildStartedAsChecked() {
assertTrue(slacknotificationAllEnabled.getStateBuildStartedAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateBuildStartedAsChecked().equals(CHECKED));
}
@Test
public void testGetStateBuildFinishedAsChecked() {
assertTrue(slacknotificationAllEnabled.getStateBeforeFinishedAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateBeforeFinishedAsChecked().equals(CHECKED));
}
@Test
public void testGetStateBeforeFinishedAsChecked() {
assertTrue(slacknotificationAllEnabled.getStateBeforeFinishedAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateBeforeFinishedAsChecked().equals(CHECKED));
}
@Test
public void testGetStateResponsibilityChangedAsChecked() {
assertTrue(slacknotificationAllEnabled.getStateResponsibilityChangedAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateResponsibilityChangedAsChecked().equals(CHECKED));
}
@Test
public void testGetStateBuildInterruptedAsChecked() {
assertTrue(slacknotificationAllEnabled.getStateBuildInterruptedAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateBuildInterruptedAsChecked().equals(CHECKED));
}
@Test
public void testGetStateBuildSuccessfulAsChecked() {
assertTrue(slacknotificationAllEnabled.getStateBuildInterruptedAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateBuildInterruptedAsChecked().equals(CHECKED));
}
@Test
public void testGetStateBuildFixedAsChecked() {
assertFalse(slacknotificationAllEnabled.getStateBuildFixedAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateBuildFixedAsChecked().equals(CHECKED));
}
@Test
public void testGetStateBuildFailedAsChecked() {
assertTrue(slacknotificationAllEnabled.getStateBuildFailedAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateBuildFailedAsChecked().equals(CHECKED));
}
@Test
public void testGetStateBuildBrokenAsChecked() {
assertFalse(slacknotificationAllEnabled.getStateBuildBrokenAsChecked().equals(CHECKED));
assertFalse(slacknotificationAllDisabled.getStateBuildBrokenAsChecked().equals(CHECKED));
}
@Test
public void loading_config_when_custom_content_section_is_present_sets_customContentEnabled(){
assertTrue(slacknotificationCustomContent.hasCustomContent());
}
@Test
public void loading_config_when_custom_content_section_is_not_present_does_not_set_customContentEnabled(){
assertFalse(slacknotificationMostEnabled.hasCustomContent());
}
@Test
public void loading_config_when_custom_content_section_is_present_sets_customContent(){
assertNotSame(SlackNotificationMainConfig.DEFAULT_BOTNAME, slacknotificationCustomContent.getContent().getBotName());
assertNotSame(SlackNotificationMainConfig.DEFAULT_ICONURL, slacknotificationCustomContent.getContent().getIconUrl());
assertTrue(slacknotificationCustomContent.getContent().getShowBuildAgent());
assertTrue(slacknotificationCustomContent.getContent().getShowElapsedBuildTime());
assertTrue(slacknotificationCustomContent.getContent().getShowCommits());
assertTrue(slacknotificationCustomContent.getContent().getShowElapsedBuildTime());
assertTrue(slacknotificationCustomContent.getContent().getShowFailureReason());
assertEquals(20, slacknotificationCustomContent.getContent().getMaxCommitsToDisplay());
}
@Test
public void getAsElement_when_custom_content_sets_customContent(){
Element e = slacknotificationCustomContent.getAsElement();
SlackNotificationConfig config = new SlackNotificationConfig(e);
assertTrue(config.hasCustomContent());
assertNotSame(SlackNotificationMainConfig.DEFAULT_BOTNAME, slacknotificationCustomContent.getContent().getBotName());
assertNotSame(SlackNotificationMainConfig.DEFAULT_ICONURL, slacknotificationCustomContent.getContent().getIconUrl());
assertTrue(slacknotificationCustomContent.getContent().getShowBuildAgent());
assertTrue(slacknotificationCustomContent.getContent().getShowElapsedBuildTime());
assertTrue(slacknotificationCustomContent.getContent().getShowCommits());
assertTrue(slacknotificationCustomContent.getContent().getShowElapsedBuildTime());
assertTrue(slacknotificationCustomContent.getContent().getShowFailureReason());
assertEquals(20, slacknotificationCustomContent.getContent().getMaxCommitsToDisplay());
}
}