diff --git a/.gitignore b/.gitignore index c92316c..e4219c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ target work +.idea *.iml .classpath .project diff --git a/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberResult.java b/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberResult.java index a933aa6..ab0e23d 100644 --- a/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberResult.java +++ b/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberResult.java @@ -11,29 +11,29 @@ public class CucumberResult { final List featureResults; final int passPercentage; final int totalScenarios; - + public CucumberResult(List featureResults, int totalScenarios, int passPercentage) { this.featureResults = featureResults; this.totalScenarios = totalScenarios; this.passPercentage = passPercentage; } - + public int getPassPercentage() { return this.passPercentage; } - + public int getTotalFeatures() { return this.featureResults.size(); } - + public int getTotalScenarios() { return this.totalScenarios; } - + public List getFeatureResults() { return this.featureResults; } - + public String toSlackMessage(final String jobName, final int buildNumber, final String channel, final String jenkinsUrl, final String extra) { final JsonObject json = new JsonObject(); @@ -66,7 +66,7 @@ private String getJenkinsHyperlink(final String jenkinsUrl, final String jobName s.append("/"); return s.toString(); } - + public String toHeader(final String jobName, final int buildNumber, final String jenkinsUrl, final String extra) { StringBuilder s = new StringBuilder(); if (StringUtils.isNotEmpty(extra)) { @@ -83,11 +83,11 @@ public String toHeader(final String jobName, final int buildNumber, final String s.append(">"); return s.toString(); } - + private void addCaption(final JsonObject json, final int buildNumber, final String jobName, final String jenkinsUrl, final String extra) { json.addProperty("pretext", toHeader(jobName, buildNumber, jenkinsUrl, extra)); } - + private void addColourAndIcon(JsonObject json, String good, String value) { json.addProperty("color", good); json.addProperty("icon_emoji", value); @@ -111,7 +111,7 @@ private JsonArray getFields(final String jobName, final int buildNumber, final S return fields; } - + private JsonObject shortObject(final String value) { JsonObject obj = new JsonObject(); obj.addProperty("value", value); diff --git a/src/main/java/org/jenkinsci/plugins/slacknotifier/FeatureResult.java b/src/main/java/org/jenkinsci/plugins/slacknotifier/FeatureResult.java index 50500a8..eedf947 100644 --- a/src/main/java/org/jenkinsci/plugins/slacknotifier/FeatureResult.java +++ b/src/main/java/org/jenkinsci/plugins/slacknotifier/FeatureResult.java @@ -12,19 +12,19 @@ public FeatureResult(String name, int passPercentage) { public String toString() { return this.name + "=" + this.passPercentage; } - + public String getName() { return this.name; } - + public String getFeatureUri() { - return this.name.replace(".feature", "-feature") + ".html"; + return this.name.replaceAll("/", "-").replace(".feature", "-feature") + ".html"; } - + public String getDisplayName() { return this.name.replaceAll("_", " ").replace(".feature", ""); } - + public int getPassPercentage() { return this.passPercentage; } diff --git a/src/test/java/org/jenkinsci/plugins/slacknotifier/SlackClientTest.java b/src/test/java/org/jenkinsci/plugins/slacknotifier/SlackClientTest.java index 70a4573..35cd627 100644 --- a/src/test/java/org/jenkinsci/plugins/slacknotifier/SlackClientTest.java +++ b/src/test/java/org/jenkinsci/plugins/slacknotifier/SlackClientTest.java @@ -29,10 +29,10 @@ public void canGenerateFullSuccessfulSlackMessage() throws FileNotFoundException assertEquals(8, result.getTotalScenarios()); assertEquals(8, result.getTotalFeatures()); assertEquals(100, result.getPassPercentage()); - + String slackMessage = result.toSlackMessage("test-job", 7, "channel", "http://jenkins:8080/", null); assertNotNull(slackMessage); - assertTrue(slackMessage.contains("")); + assertTrue(slackMessage.contains("")); } @Test @@ -49,7 +49,7 @@ public void canGenerateMinimalSuccessfulSlackMessage() throws FileNotFoundExcept String slackMessage = result.toSlackMessage("test-job", 7, "channel", "http://jenkins:8080/", null); assertNotNull(slackMessage); } - + @Test public void canGenerateFullFailedSlackMessage() throws FileNotFoundException { JsonElement element = loadTestResultFile("failed-result.json"); @@ -73,7 +73,7 @@ public void canGenerateMinimalFailedSlackMessage() throws FileNotFoundException assertEquals(1, result.getTotalFeatures()); assertEquals(87, result.getPassPercentage()); } - + @Test public void canGenerateGoodMessage() { String slackMessage = successfulResult().toSlackMessage("test-job", 1, "channel", "http://jenkins:8080/", null); @@ -107,15 +107,15 @@ private JsonElement getResultFileAsJsonElement(InputStream stream) { final JsonReader jsonReader = new JsonReader(new InputStreamReader(stream)); return gson.fromJson(jsonReader, JsonElement.class); } - + private CucumberResult successfulResult() { return new CucumberResult(Arrays.asList(new FeatureResult("Dummy Test", 100)),1,100); } - + private CucumberResult badResult() { return new CucumberResult(Arrays.asList(new FeatureResult("Dummy Test", 0)),1,0); } - + private CucumberResult marginalResult() { return new CucumberResult(Arrays.asList(new FeatureResult("Dummy Test", 99)),1,99); } diff --git a/src/test/resources/successful-result.json b/src/test/resources/successful-result.json index 8f5d76b..bd3bd89 100644 --- a/src/test/resources/successful-result.json +++ b/src/test/resources/successful-result.json @@ -52,7 +52,7 @@ "type": "scenario" } ], - "uri": "validate_confluence_home_page.feature" + "uri": "features/validate_confluence_home_page.feature" }, { "id": "validate-gerrit-home-page", @@ -107,7 +107,7 @@ "type": "scenario" } ], - "uri": "validate_gerrit_home_page.feature" + "uri": "features/validate_gerrit_home_page.feature" }, { "id": "validate-jenkins-home-page", @@ -162,7 +162,7 @@ "type": "scenario" } ], - "uri": "validate_jenkins_home_page.feature" + "uri": "features/validate_jenkins_home_page.feature" }, { "id": "validate-jira-home-page", @@ -217,7 +217,7 @@ "type": "scenario" } ], - "uri": "validate_jira_home_page.feature" + "uri": "features/validate_jira_home_page.feature" }, { "id": "validate-login-page", @@ -296,7 +296,7 @@ "type": "scenario" } ], - "uri": "validate_login_page.feature" + "uri": "features/validate_login_page.feature" }, { "id": "validate-nexus-home-page", @@ -351,7 +351,7 @@ "type": "scenario" } ], - "uri": "validate_nexus_home_page.feature" + "uri": "features/validate_nexus_home_page.feature" }, { "id": "validate-register-developer-page", @@ -430,7 +430,7 @@ "type": "scenario" } ], - "uri": "validate_register_developer_page.feature" + "uri": "features/validate_register_developer_page.feature" }, { "id": "validate-sonar-home-page", @@ -485,6 +485,6 @@ "type": "scenario" } ], - "uri": "validate_sonar_home_page.feature" + "uri": "features/validate_sonar_home_page.feature" } ]