Skip to content
This repository was archived by the owner on Nov 19, 2024. It is now read-only.

Commit 6b0e0eb

Browse files
committed
Add unit tests that show how to verify the source code view model.
1 parent 8e8c40b commit 6b0e0eb

File tree

4 files changed

+49
-3
lines changed

4 files changed

+49
-3
lines changed

src/main/java/io/jenkins/plugins/coverage/model/CoverageBuildAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ public HealthReport getBuildHealth() {
182182
}
183183

184184
@Override
185-
public Object getTarget() {
185+
public CoverageViewModel getTarget() {
186186
return new CoverageViewModel(getOwner(), getResult());
187187
}
188188

src/main/java/io/jenkins/plugins/coverage/model/CoverageViewModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public String getUrlForBuild(final String selectedBuildDisplayName, final String
164164
* @return the new sub-page
165165
*/
166166
@SuppressWarnings("unused") // Called by jelly view
167-
public Object getDynamic(final String link, final StaplerRequest request, final StaplerResponse response) {
167+
public SourceViewModel getDynamic(final String link, final StaplerRequest request, final StaplerResponse response) {
168168
if (StringUtils.isNotEmpty(link)) {
169169
try {
170170
Optional<CoverageNode> targetResult = getNode().findByHashCode(CoverageMetric.FILE, Integer.parseInt(link));
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.jenkins.plugins.coverage.model;
2+
3+
import java.util.SortedMap;
4+
import java.util.TreeMap;
5+
6+
import org.junit.jupiter.api.Test;
7+
8+
import hudson.model.Run;
9+
10+
import static org.assertj.core.api.Assertions.*;
11+
import static org.mockito.Mockito.*;
12+
13+
/**
14+
* Tests the class {@link CoverageBuildAction}.
15+
*
16+
* @author Ullrich Hafner
17+
*/
18+
class CoverageBuildActionTest {
19+
@Test
20+
void shouldCreateViewModel() {
21+
Run<?, ?> build = mock(Run.class);
22+
CoverageNode root = new CoverageNode(CoverageMetric.MODULE, "top-level");
23+
SortedMap<CoverageMetric, Double> metrics = new TreeMap<>();
24+
25+
CoverageBuildAction action = new CoverageBuildAction(build, root, "-", metrics, false);
26+
27+
assertThat(action.getTarget()).extracting(CoverageViewModel::getNode).isEqualTo(root);
28+
assertThat(action.getTarget()).extracting(CoverageViewModel::getOwner).isEqualTo(build);
29+
}
30+
}

src/test/java/io/jenkins/plugins/coverage/model/CoverageViewModelTest.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
class CoverageViewModelTest extends AbstractCoverageTest {
1919
@Test
2020
void shouldReportOverview() {
21-
CoverageViewModel model = new CoverageViewModel(mock(Run.class), readNode("jacoco-codingstyle.xml"));
21+
CoverageViewModel model = createModel();
2222

2323
assertThat(model.getDisplayName()).contains("Java coding style: jacoco-codingstyle.xml");
2424

@@ -32,5 +32,21 @@ void shouldReportOverview() {
3232
assertThatJson(overview).node("missed").isArray().containsExactly(
3333
0, 3, 3, 5, 29, 90, 7
3434
);
35+
36+
assertThat(model.getDynamic("unknown", null, null))
37+
.isNull();
38+
}
39+
40+
@Test
41+
void shouldReturnEmptySourceViewForExistingLinkButMissingSourceFile() {
42+
CoverageViewModel model = createModel();
43+
44+
String link = String.valueOf("PathUtil.java".hashCode());
45+
assertThat(model.getDynamic(link, null, null))
46+
.extracting(SourceViewModel::getSourceFileContent).isEqualTo("n/a");
47+
}
48+
49+
private CoverageViewModel createModel() {
50+
return new CoverageViewModel(mock(Run.class), readNode("jacoco-codingstyle.xml"));
3551
}
3652
}

0 commit comments

Comments
 (0)