]> source.dussan.org Git - sonarqube.git/commitdiff
Improve UT coverage 656/head
authorJulien HENRY <julien.henry@sonarsource.com>
Fri, 27 Nov 2015 09:31:57 +0000 (10:31 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 30 Nov 2015 14:02:00 +0000 (15:02 +0100)
sonar-batch/src/main/java/org/sonar/batch/issue/TrackedIssueAdapter.java
sonar-batch/src/main/java/org/sonar/batch/issue/tracking/TrackedIssue.java
sonar-batch/src/test/java/org/sonar/batch/issue/DeprecatedIssueAdapterForFilterTest.java [new file with mode: 0644]
sonar-batch/src/test/java/org/sonar/batch/issue/TrackedIssueAdapterTest.java [new file with mode: 0644]

index 575df94cd5f79c1ec25f8074f30b1d9a772de42e..5e528a6c892b8e5b1404bda99d1ec045c0ee03e8 100644 (file)
  */
 package org.sonar.batch.issue;
 
-import org.sonar.api.issue.IssueComment;
-import org.sonar.api.rule.RuleKey;
-import org.sonar.api.utils.Duration;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
-import org.sonar.batch.issue.tracking.TrackedIssue;
 import org.sonar.api.issue.Issue;
+import org.sonar.api.issue.IssueComment;
+import org.sonar.api.rule.RuleKey;
+import org.sonar.api.utils.Duration;
+import org.sonar.batch.issue.tracking.TrackedIssue;
 
 public class TrackedIssueAdapter implements Issue {
   private TrackedIssue issue;
@@ -127,7 +125,7 @@ public class TrackedIssueAdapter implements Issue {
 
   @Override
   public String attribute(String key) {
-    return null;
+    return attributes().get(key);
   }
 
   @Override
index c7938b6359ad7b1bfffe0cdd122af5f42d6854f6..4620336f636b715a0129fcf9734b20b3391efc4d 100644 (file)
  */
 package org.sonar.batch.issue.tracking;
 
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
 import com.google.common.base.Preconditions;
-
-import javax.annotation.CheckForNull;
-import javax.annotation.Nullable;
-
-import org.sonar.core.issue.tracking.Trackable;
-
 import java.io.Serializable;
 import java.util.Date;
-
+import javax.annotation.CheckForNull;
+import javax.annotation.Nullable;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
 import org.sonar.api.rule.RuleKey;
+import org.sonar.core.issue.tracking.Trackable;
 
 public class TrackedIssue implements Trackable, Serializable {
   private static final long serialVersionUID = -1755017079070964287L;
@@ -81,16 +77,18 @@ public class TrackedIssue implements Trackable, Serializable {
     return message;
   }
 
-  public void setMessage(String message) {
+  public TrackedIssue setMessage(String message) {
     this.message = message;
+    return this;
   }
 
   public String componentKey() {
     return componentKey;
   }
 
-  public void setComponentKey(String componentKey) {
+  public TrackedIssue setComponentKey(String componentKey) {
     this.componentKey = componentKey;
+    return this;
   }
 
   public String key() {
@@ -106,68 +104,77 @@ public class TrackedIssue implements Trackable, Serializable {
     return startLine;
   }
 
-  public void setStartLine(Integer startLine) {
+  public TrackedIssue setStartLine(Integer startLine) {
     this.startLine = startLine;
+    return this;
   }
 
   public Integer startLineOffset() {
     return startLineOffset;
   }
 
-  public void setStartLineOffset(Integer startLineOffset) {
+  public TrackedIssue setStartLineOffset(Integer startLineOffset) {
     this.startLineOffset = startLineOffset;
+    return this;
   }
 
   public Integer endLine() {
     return endLine;
   }
 
-  public void setEndLine(Integer endLine) {
+  public TrackedIssue setEndLine(Integer endLine) {
     this.endLine = endLine;
+    return this;
   }
 
   public Integer endLineOffset() {
     return endLineOffset;
   }
 
-  public void setEndLineOffset(Integer endLineOffset) {
+  public TrackedIssue setEndLineOffset(Integer endLineOffset) {
     this.endLineOffset = endLineOffset;
+    return this;
   }
 
-  public void setKey(String key) {
+  public TrackedIssue setKey(String key) {
     this.key = key;
+    return this;
   }
 
   public String assignee() {
     return assignee;
   }
 
-  public void setAssignee(String assignee) {
+  public TrackedIssue setAssignee(String assignee) {
     this.assignee = assignee;
+    return this;
   }
 
   public String reporter() {
     return reporter;
   }
 
-  public void setReporter(String reporter) {
+  public TrackedIssue setReporter(String reporter) {
     this.reporter = reporter;
+    return this;
   }
 
   public String resolution() {
     return resolution;
   }
 
-  public void setResolution(String resolution) {
+  public TrackedIssue setResolution(String resolution) {
     this.resolution = resolution;
+    return this;
   }
 
   public String status() {
     return status;
   }
 
-  public void setStatus(String status) {
+  public TrackedIssue setStatus(String status) {
     this.status = status;
+    return this;
   }
 
   @Override
@@ -191,28 +198,33 @@ public class TrackedIssue implements Trackable, Serializable {
     return isNew;
   }
 
-  public void setNew(boolean isNew) {
+  public TrackedIssue setNew(boolean isNew) {
     this.isNew = isNew;
+    return this;
   }
 
   public Date creationDate() {
     return creationDate;
   }
 
-  public void setCreationDate(Date creationDate) {
+  public TrackedIssue setCreationDate(Date creationDate) {
     this.creationDate = creationDate;
+    return this;
   }
 
-  public void setRuleKey(RuleKey ruleKey) {
+  public TrackedIssue setRuleKey(RuleKey ruleKey) {
     this.ruleKey = ruleKey;
+    return this;
   }
 
-  public void setSeverity(String severity) {
+  public TrackedIssue setSeverity(String severity) {
     this.severity = severity;
+    return this;
   }
 
-  public void setEffortToFix(Double effortToFix) {
+  public TrackedIssue setEffortToFix(Double effortToFix) {
     this.effortToFix = effortToFix;
+    return this;
   }
 
   @Override
diff --git a/sonar-batch/src/test/java/org/sonar/batch/issue/DeprecatedIssueAdapterForFilterTest.java b/sonar-batch/src/test/java/org/sonar/batch/issue/DeprecatedIssueAdapterForFilterTest.java
new file mode 100644 (file)
index 0000000..169f504
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.batch.issue;
+
+import java.util.Date;
+import org.junit.Test;
+import org.sonar.api.issue.Issue;
+import org.sonar.api.resources.Project;
+import org.sonar.api.rule.RuleKey;
+import org.sonar.batch.protocol.Constants.Severity;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+public class DeprecatedIssueAdapterForFilterTest {
+
+  private static final String PROJECT_KEY = "foo";
+  private static final Date ANALYSIS_DATE = new Date();
+  private static final String COMPONENT_KEY = "foo:src/Foo.java";
+
+  @Test
+  public void improve_coverage() {
+    DeprecatedIssueAdapterForFilter issue = new DeprecatedIssueAdapterForFilter(new Project(PROJECT_KEY).setAnalysisDate(ANALYSIS_DATE),
+      org.sonar.batch.protocol.output.BatchReport.Issue.newBuilder()
+        .setRuleRepository("repo")
+        .setRuleKey("key")
+        .setSeverity(Severity.BLOCKER)
+        .setMsg("msg")
+        .build(),
+      COMPONENT_KEY);
+    DeprecatedIssueAdapterForFilter issue2 = new DeprecatedIssueAdapterForFilter(new Project(PROJECT_KEY).setAnalysisDate(ANALYSIS_DATE),
+      org.sonar.batch.protocol.output.BatchReport.Issue.newBuilder()
+        .setRuleRepository("repo")
+        .setRuleKey("key")
+        .setSeverity(Severity.BLOCKER)
+        .setMsg("msg")
+        .setLine(1)
+        .setEffortToFix(2.0)
+        .build(),
+      COMPONENT_KEY);
+
+    try {
+      issue.key();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    assertThat(issue.componentKey()).isEqualTo(COMPONENT_KEY);
+    assertThat(issue.ruleKey()).isEqualTo(RuleKey.of("repo", "key"));
+
+    try {
+      issue.language();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    assertThat(issue.severity()).isEqualTo("BLOCKER");
+    assertThat(issue.message()).isEqualTo("msg");
+    assertThat(issue.line()).isNull();
+    assertThat(issue2.line()).isEqualTo(1);
+    assertThat(issue.effortToFix()).isNull();
+    assertThat(issue2.effortToFix()).isEqualTo(2.0);
+    assertThat(issue.status()).isEqualTo(Issue.STATUS_OPEN);
+    assertThat(issue.resolution()).isNull();
+
+    try {
+      issue.reporter();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    assertThat(issue.assignee()).isNull();
+    assertThat(issue.creationDate()).isEqualTo(ANALYSIS_DATE);
+    assertThat(issue.updateDate()).isNull();
+    assertThat(issue.closeDate()).isNull();
+    assertThat(issue.attribute(PROJECT_KEY)).isNull();
+
+    try {
+      issue.authorLogin();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    try {
+      issue.actionPlanKey();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    try {
+      issue.comments();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    try {
+      issue.isNew();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    try {
+      issue.debt();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    assertThat(issue.projectKey()).isEqualTo(PROJECT_KEY);
+
+    try {
+      issue.projectUuid();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    try {
+      issue.componentUuid();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+
+    try {
+      issue.tags();
+      fail("Should be unsupported");
+    } catch (Exception e) {
+      assertThat(e).isExactlyInstanceOf(UnsupportedOperationException.class).hasMessage("Not available for issues filters");
+    }
+  }
+
+}
diff --git a/sonar-batch/src/test/java/org/sonar/batch/issue/TrackedIssueAdapterTest.java b/sonar-batch/src/test/java/org/sonar/batch/issue/TrackedIssueAdapterTest.java
new file mode 100644 (file)
index 0000000..eead6eb
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.batch.issue;
+
+import java.util.Date;
+import org.junit.Test;
+import org.sonar.api.issue.Issue;
+import org.sonar.api.rule.RuleKey;
+import org.sonar.batch.issue.tracking.TrackedIssue;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class TrackedIssueAdapterTest {
+
+  @Test
+  public void improve_coverage() {
+    Date creationDate = new Date();
+    TrackedIssue trackedIssue = new TrackedIssue()
+      .setKey("XYZ123")
+      .setComponentKey("foo")
+      .setRuleKey(RuleKey.of("repo", "rule"))
+      .setSeverity("MAJOR")
+      .setMessage("msg")
+      .setStartLine(1)
+      .setEffortToFix(2.0)
+      .setStatus("RESOLVED")
+      .setResolution("FIXED")
+      .setReporter("toto")
+      .setAssignee("tata")
+      .setNew(true)
+      .setCreationDate(creationDate);
+    Issue issue = new TrackedIssueAdapter(trackedIssue);
+    assertThat(issue.key()).isEqualTo("XYZ123");
+    assertThat(issue.componentKey()).isEqualTo("foo");
+    assertThat(issue.ruleKey()).isEqualTo(RuleKey.of("repo", "rule"));
+    assertThat(issue.severity()).isEqualTo("MAJOR");
+    assertThat(issue.message()).isEqualTo("msg");
+    assertThat(issue.line()).isEqualTo(1);
+    assertThat(issue.effortToFix()).isEqualTo(2.0);
+    assertThat(issue.status()).isEqualTo("RESOLVED");
+    assertThat(issue.resolution()).isEqualTo("FIXED");
+    assertThat(issue.reporter()).isEqualTo("toto");
+    assertThat(issue.assignee()).isEqualTo("tata");
+    assertThat(issue.isNew()).isTrue();
+    assertThat(issue.attribute("foo")).isNull();
+    assertThat(issue.creationDate()).isEqualTo(creationDate);
+    assertThat(issue.language()).isNull();
+    assertThat(issue.updateDate()).isNull();
+    assertThat(issue.closeDate()).isNull();
+    assertThat(issue.authorLogin()).isNull();
+    assertThat(issue.actionPlanKey()).isNull();
+    assertThat(issue.comments()).isEmpty();
+    assertThat(issue.debt()).isNull();
+    assertThat(issue.projectKey()).isNull();
+    assertThat(issue.projectUuid()).isNull();
+    assertThat(issue.componentUuid()).isNull();
+    assertThat(issue.tags()).isEmpty();
+
+    assertThat(issue).isNotEqualTo(null);
+    assertThat(issue).isNotEqualTo("Foo");
+    assertThat(issue).isEqualTo(new TrackedIssueAdapter(trackedIssue));
+    assertThat(issue.hashCode()).isEqualTo(trackedIssue.key().hashCode());
+    assertThat(issue).isNotEqualTo(new TrackedIssueAdapter(new TrackedIssue()
+      .setKey("another")));
+  }
+
+}