]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-9725 fix grammar for single issue in new issue notifications
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 14 Sep 2017 09:09:13 +0000 (11:09 +0200)
committerEric Hartmann <hartmann.eric@gmail.Com>
Mon, 2 Oct 2017 11:03:35 +0000 (13:03 +0200)
server/sonar-server/src/main/java/org/sonar/server/issue/notification/AbstractNewIssuesEmailTemplate.java
server/sonar-server/src/test/java/org/sonar/server/issue/notification/MyNewIssuesEmailTemplateTest.java
server/sonar-server/src/test/java/org/sonar/server/issue/notification/NewIssuesEmailTemplateTest.java

index e720fa8c9ee2c649928d7b3a2472765d04f82293..039f7ec9f7bb17e5d2c8d2f4da9de3e7aa881623 100644 (file)
@@ -146,9 +146,11 @@ public abstract class AbstractNewIssuesEmailTemplate extends EmailTemplate {
   }
 
   protected void appendRuleType(StringBuilder message, Notification notification) {
+    String count = notification.getFieldValue(Metric.RULE_TYPE + COUNT);
     message
-      .append(String.format("%s new issues (new debt: %s)",
-        notification.getFieldValue(Metric.RULE_TYPE + COUNT),
+      .append(String.format("%s new issue%s (new debt: %s)",
+        count,
+        Integer.valueOf(count) > 1 ? "s" : "",
         notification.getFieldValue(Metric.EFFORT + COUNT)))
       .append(NEW_LINE).append(NEW_LINE)
       .append(TAB)
@@ -157,7 +159,6 @@ public abstract class AbstractNewIssuesEmailTemplate extends EmailTemplate {
       .append(TAB)
       .append(TAB);
 
-
     for (Iterator<RuleType> ruleTypeIterator = Arrays.asList(RuleType.BUG, RuleType.VULNERABILITY, RuleType.CODE_SMELL).iterator(); ruleTypeIterator.hasNext();) {
       RuleType ruleType = ruleTypeIterator.next();
       String ruleTypeLabel = i18n.message(getLocale(), "rule_type." + ruleType, ruleType.name());
index 6d236c44a404c7f221d63106160fa9024a520eab..d87c1ce541be666e1144dc9095cd5d7f33b5c965 100644 (file)
@@ -79,7 +79,7 @@ public class MyNewIssuesEmailTemplateTest {
 
   @Test
   public void format_email_with_all_fields_filled() throws Exception {
-    Notification notification = newNotification();
+    Notification notification = newNotification(32);
     addTags(notification);
     addRules(notification);
     addComponents(notification);
@@ -112,7 +112,7 @@ public class MyNewIssuesEmailTemplateTest {
 
   @Test
   public void message_id() {
-    Notification notification = newNotification();
+    Notification notification = newNotification(32);
 
     EmailMessage message = underTest.format(notification);
 
@@ -121,7 +121,7 @@ public class MyNewIssuesEmailTemplateTest {
 
   @Test
   public void subject() {
-    Notification notification = newNotification();
+    Notification notification = newNotification(32);
 
     EmailMessage message = underTest.format(notification);
 
@@ -130,7 +130,7 @@ public class MyNewIssuesEmailTemplateTest {
 
   @Test
   public void format_email_with_no_assignees_tags_nor_components() throws Exception {
-    Notification notification = newNotification();
+    Notification notification = newNotification(32);
 
     EmailMessage message = underTest.format(notification);
 
@@ -141,14 +141,14 @@ public class MyNewIssuesEmailTemplateTest {
         "32 new issues (new debt: 1d3h)\n" +
         "\n" +
         "    Type\n" +
-          "        Bug: 1    Vulnerability: 3    Code Smell: 0\n" +
+        "        Bug: 1    Vulnerability: 3    Code Smell: 0\n" +
         "\n" +
         "See it in SonarQube: http://nemo.sonarsource.org/project/issues?id=org.apache%3Astruts&assignees=lo.gin&createdAt=2010-05-18");
   }
 
   @Test
   public void format_email_with_issue_on_branch() throws Exception {
-    Notification notification = newNotification()
+    Notification notification = newNotification(32)
       .setFieldValue("branch", "feature1");
 
     EmailMessage message = underTest.format(notification);
@@ -165,6 +165,16 @@ public class MyNewIssuesEmailTemplateTest {
         "See it in SonarQube: http://nemo.sonarsource.org/project/issues?id=org.apache%3Astruts&assignees=lo.gin&branch=feature1&createdAt=2010-05-18");
   }
 
+  @Test
+  public void format_email_supports_single_issue() {
+    Notification notification = newNotification(1);
+
+    EmailMessage message = underTest.format(notification);
+
+    assertThat(message.getMessage())
+      .contains("1 new issue (new debt: 1d3h)\n");
+  }
+
   @Test
   public void do_not_add_footer_when_properties_missing() {
     Notification notification = new Notification(MyNewIssuesNotification.MY_NEW_ISSUES_NOTIF_TYPE)
@@ -175,7 +185,7 @@ public class MyNewIssuesEmailTemplateTest {
     assertThat(message.getMessage()).doesNotContain("See it");
   }
 
-  private Notification newNotification() {
+  private Notification newNotification(int count) {
     return new Notification(MyNewIssuesNotification.MY_NEW_ISSUES_NOTIF_TYPE)
       .setFieldValue("projectName", "Struts")
       .setFieldValue("projectKey", "org.apache:struts")
@@ -183,7 +193,7 @@ public class MyNewIssuesEmailTemplateTest {
       .setFieldValue("projectDate", "2010-05-18T14:50:45+0000")
       .setFieldValue("assignee", "lo.gin")
       .setFieldValue(EFFORT + ".count", "1d3h")
-      .setFieldValue(RULE_TYPE + ".count", "32")
+      .setFieldValue(RULE_TYPE + ".count", String.valueOf(count))
       .setFieldValue(RULE_TYPE + ".BUG.count", "1")
       .setFieldValue(RULE_TYPE + ".VULNERABILITY.count", "3")
       .setFieldValue(RULE_TYPE + ".CODE_SMELL.count", "0");
index dca87c0ead68d93e22493e81b8486a022579ca19..41cdb6bf3807ec8f2afac369fd0fbda44250da26 100644 (file)
@@ -77,7 +77,7 @@ public class NewIssuesEmailTemplateTest {
 
   @Test
   public void message_id() {
-    Notification notification = newNotification();
+    Notification notification = newNotification(32);
 
     EmailMessage message = template.format(notification);
 
@@ -86,7 +86,7 @@ public class NewIssuesEmailTemplateTest {
 
   @Test
   public void subject() {
-    Notification notification = newNotification();
+    Notification notification = newNotification(32);
 
     EmailMessage message = template.format(notification);
 
@@ -95,7 +95,7 @@ public class NewIssuesEmailTemplateTest {
 
   @Test
   public void format_email_with_all_fields_filled() throws Exception {
-    Notification notification = newNotification();
+    Notification notification = newNotification(32);
     addAssignees(notification);
     addRules(notification);
     addTags(notification);
@@ -133,7 +133,7 @@ public class NewIssuesEmailTemplateTest {
 
   @Test
   public void format_email_with_no_assignees_tags_nor_components() throws Exception {
-    Notification notification = newNotification();
+    Notification notification = newNotification(32);
 
     EmailMessage message = template.format(notification);
 
@@ -149,9 +149,19 @@ public class NewIssuesEmailTemplateTest {
         "See it in SonarQube: http://nemo.sonarsource.org/project/issues?id=org.apache%3Astruts&createdAt=2010-05-1");
   }
 
+  @Test
+  public void format_email_supports_single_issue() {
+    Notification notification = newNotification(1);
+
+    EmailMessage message = template.format(notification);
+
+    assertThat(message.getMessage())
+      .contains("1 new issue (new debt: 1d3h)\n");
+  }
+
   @Test
   public void format_email_with_issue_on_branch() throws Exception {
-    Notification notification = newNotification()
+    Notification notification = newNotification(32)
       .setFieldValue("branch", "feature1");
 
     EmailMessage message = template.format(notification);
@@ -179,14 +189,14 @@ public class NewIssuesEmailTemplateTest {
     assertThat(message.getMessage()).doesNotContain("See it");
   }
 
-  private Notification newNotification() {
+  private Notification newNotification(int count) {
     return new Notification(NewIssuesNotification.TYPE)
       .setFieldValue("projectName", "Struts")
       .setFieldValue("projectKey", "org.apache:struts")
       .setFieldValue("projectUuid", "ABCDE")
       .setFieldValue("projectDate", "2010-05-18T14:50:45+0000")
       .setFieldValue(EFFORT + ".count", "1d3h")
-      .setFieldValue(RULE_TYPE + ".count", "32")
+      .setFieldValue(RULE_TYPE + ".count", String.valueOf(count))
       .setFieldValue(RULE_TYPE + ".BUG.count", "1")
       .setFieldValue(RULE_TYPE + ".CODE_SMELL.count", "3")
       .setFieldValue(RULE_TYPE + ".VULNERABILITY.count", "10");