Skip to content

Commit

Permalink
Improve UT coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
henryju committed Nov 30, 2015
1 parent 8039a98 commit f627842
Show file tree
Hide file tree
Showing 4 changed files with 283 additions and 32 deletions.
Expand Up @@ -19,19 +19,17 @@
*/ */
package org.sonar.batch.issue; 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.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

import org.sonar.batch.issue.tracking.TrackedIssue;
import org.sonar.api.issue.Issue; 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 { public class TrackedIssueAdapter implements Issue {
private TrackedIssue issue; private TrackedIssue issue;
Expand Down Expand Up @@ -127,7 +125,7 @@ public Date closeDate() {


@Override @Override
public String attribute(String key) { public String attribute(String key) {
return null; return attributes().get(key);
} }


@Override @Override
Expand Down
Expand Up @@ -19,19 +19,15 @@
*/ */
package org.sonar.batch.issue.tracking; 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 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.io.Serializable;
import java.util.Date; 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.api.rule.RuleKey;
import org.sonar.core.issue.tracking.Trackable;


public class TrackedIssue implements Trackable, Serializable { public class TrackedIssue implements Trackable, Serializable {
private static final long serialVersionUID = -1755017079070964287L; private static final long serialVersionUID = -1755017079070964287L;
Expand Down Expand Up @@ -81,16 +77,18 @@ public String getMessage() {
return message; return message;
} }


public void setMessage(String message) { public TrackedIssue setMessage(String message) {
this.message = message; this.message = message;
return this;
} }


public String componentKey() { public String componentKey() {
return componentKey; return componentKey;
} }


public void setComponentKey(String componentKey) { public TrackedIssue setComponentKey(String componentKey) {
this.componentKey = componentKey; this.componentKey = componentKey;
return this;
} }


public String key() { public String key() {
Expand All @@ -106,68 +104,77 @@ public Integer getLine() {
return startLine; return startLine;
} }


public void setStartLine(Integer startLine) { public TrackedIssue setStartLine(Integer startLine) {
this.startLine = startLine; this.startLine = startLine;
return this;
} }


public Integer startLineOffset() { public Integer startLineOffset() {
return startLineOffset; return startLineOffset;
} }


public void setStartLineOffset(Integer startLineOffset) { public TrackedIssue setStartLineOffset(Integer startLineOffset) {
this.startLineOffset = startLineOffset; this.startLineOffset = startLineOffset;
return this;
} }


public Integer endLine() { public Integer endLine() {
return endLine; return endLine;
} }


public void setEndLine(Integer endLine) { public TrackedIssue setEndLine(Integer endLine) {
this.endLine = endLine; this.endLine = endLine;
return this;
} }


public Integer endLineOffset() { public Integer endLineOffset() {
return endLineOffset; return endLineOffset;
} }


public void setEndLineOffset(Integer endLineOffset) { public TrackedIssue setEndLineOffset(Integer endLineOffset) {
this.endLineOffset = endLineOffset; this.endLineOffset = endLineOffset;
return this;
} }


public void setKey(String key) { public TrackedIssue setKey(String key) {
this.key = key; this.key = key;
return this;
} }


public String assignee() { public String assignee() {
return assignee; return assignee;
} }


public void setAssignee(String assignee) { public TrackedIssue setAssignee(String assignee) {
this.assignee = assignee; this.assignee = assignee;
return this;
} }


public String reporter() { public String reporter() {
return reporter; return reporter;
} }


public void setReporter(String reporter) { public TrackedIssue setReporter(String reporter) {
this.reporter = reporter; this.reporter = reporter;
return this;
} }


public String resolution() { public String resolution() {
return resolution; return resolution;
} }


public void setResolution(String resolution) { public TrackedIssue setResolution(String resolution) {
this.resolution = resolution; this.resolution = resolution;
return this;
} }


public String status() { public String status() {
return status; return status;
} }


public void setStatus(String status) { public TrackedIssue setStatus(String status) {
this.status = status; this.status = status;
return this;
} }


@Override @Override
Expand All @@ -191,28 +198,33 @@ public boolean isNew() {
return isNew; return isNew;
} }


public void setNew(boolean isNew) { public TrackedIssue setNew(boolean isNew) {
this.isNew = isNew; this.isNew = isNew;
return this;
} }


public Date creationDate() { public Date creationDate() {
return creationDate; return creationDate;
} }


public void setCreationDate(Date creationDate) { public TrackedIssue setCreationDate(Date creationDate) {
this.creationDate = creationDate; this.creationDate = creationDate;
return this;
} }


public void setRuleKey(RuleKey ruleKey) { public TrackedIssue setRuleKey(RuleKey ruleKey) {
this.ruleKey = ruleKey; this.ruleKey = ruleKey;
return this;
} }


public void setSeverity(String severity) { public TrackedIssue setSeverity(String severity) {
this.severity = severity; this.severity = severity;
return this;
} }


public void setEffortToFix(Double effortToFix) { public TrackedIssue setEffortToFix(Double effortToFix) {
this.effortToFix = effortToFix; this.effortToFix = effortToFix;
return this;
} }


@Override @Override
Expand Down
@@ -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");
}
}

}

0 comments on commit f627842

Please sign in to comment.