Skip to content

Commit 14a4235

Browse files
Added unit tests and refactored a little
1 parent cebb861 commit 14a4235

File tree

2 files changed

+79
-14
lines changed

2 files changed

+79
-14
lines changed

refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenReport.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,6 @@ public String getDescription(Locale locale) {
6060
@Override
6161
protected void executeReport(Locale locale) throws MavenReportException {
6262

63-
GitLogReader gitLogReader = new GitLogReader();
64-
String projectBaseDir = project.getBasedir().getPath();
65-
String parentOfGitDir = gitLogReader.getGitDir(project.getBasedir()).getParentFile().getPath();
66-
6763
final String[] simpleTableHeadings = { "Class",
6864
"Priority",
6965
"Change Proneness Rank",
@@ -89,6 +85,9 @@ protected void executeReport(Locale locale) throws MavenReportException {
8985

9086
final String[] tableHeadings = showDetails ? detailedTableHeadings: simpleTableHeadings;
9187

88+
GitLogReader gitLogReader = new GitLogReader();
89+
String projectBaseDir = project.getBasedir().getPath();
90+
String parentOfGitDir = gitLogReader.getGitDir(project.getBasedir()).getParentFile().getPath();
9291
log.info("Project Base Dir: {} ", projectBaseDir);
9392
log.info("Parent of Git Dir: {}", parentOfGitDir);
9493

@@ -218,13 +217,13 @@ protected void executeReport(Locale locale) throws MavenReportException {
218217
log.info("Done! View the report at target/site/{}", filename);
219218
}
220219

221-
private void drawTableHeaderCell(String cellText, Sink mainSink) {
220+
void drawTableHeaderCell(String cellText, Sink mainSink) {
222221
mainSink.tableHeaderCell();
223222
mainSink.text(cellText);
224223
mainSink.tableHeaderCell_();
225224
}
226225

227-
private void drawTableCell(String cellText, Sink mainSink) {
226+
void drawTableCell(String cellText, Sink mainSink) {
228227
mainSink.tableCell();
229228
mainSink.text(cellText);
230229
mainSink.tableCell_();
@@ -233,7 +232,7 @@ private void drawTableCell(String cellText, Sink mainSink) {
233232
/**
234233
* @See https://maven.apache.org/doxia/developers/sink.html#How_to_inject_javascript_code_into_HTML
235234
*/
236-
private void generateChart(List<RankedDisharmony> rankedDisharmonies, Sink mainSink) {
235+
void generateChart(List<RankedDisharmony> rankedDisharmonies, Sink mainSink) {
237236
SinkEventAttributeSet googleChartImport = new SinkEventAttributeSet();
238237
googleChartImport.addAttribute( SinkEventAttributes.TYPE, "text/javascript" );
239238
googleChartImport.addAttribute( SinkEventAttributes.SRC, "https://www.gstatic.com/charts/loader.js" );
@@ -242,6 +241,18 @@ private void generateChart(List<RankedDisharmony> rankedDisharmonies, Sink mainS
242241
mainSink.unknown(script, new Object[]{HtmlMarkup.TAG_TYPE_START}, googleChartImport);
243242
mainSink.unknown(script, new Object[]{HtmlMarkup.TAG_TYPE_END}, null);
244243

244+
writeGchartJs(rankedDisharmonies);
245+
246+
SinkEventAttributeSet javascript = new SinkEventAttributeSet();
247+
javascript.addAttribute( SinkEventAttributes.TYPE, "text/javascript");
248+
javascript.addAttribute( SinkEventAttributes.SRC, "./gchart.js");
249+
250+
mainSink.unknown(script, new Object[]{HtmlMarkup.TAG_TYPE_START }, javascript );
251+
mainSink.unknown(script, new Object[]{HtmlMarkup.TAG_TYPE_END}, null );
252+
}
253+
254+
//TODO: Move to another class to allow use by Gradle plugin
255+
void writeGchartJs(List<RankedDisharmony> rankedDisharmonies) {
245256
GraphDataGenerator graphDataGenerator = new GraphDataGenerator();
246257
String scriptStart = graphDataGenerator.getScriptStart();
247258
String bubbleChartData = graphDataGenerator.generateBubbleChartData(rankedDisharmonies);
@@ -268,12 +279,5 @@ private void generateChart(List<RankedDisharmony> rankedDisharmonies, Sink mainS
268279
} catch (IOException e) {
269280
log.error("Error writing chart script file", e);
270281
}
271-
272-
SinkEventAttributeSet javascript = new SinkEventAttributeSet();
273-
javascript.addAttribute( SinkEventAttributes.TYPE, "text/javascript");
274-
javascript.addAttribute( SinkEventAttributes.SRC, "./gchart.js");
275-
276-
mainSink.unknown(script, new Object[]{HtmlMarkup.TAG_TYPE_START }, javascript );
277-
mainSink.unknown(script, new Object[]{HtmlMarkup.TAG_TYPE_END}, null );
278282
}
279283
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package org.hjug.mavenreport;
2+
3+
import org.apache.maven.doxia.sink.Sink;
4+
import org.junit.Before;
5+
import org.junit.Test;
6+
7+
import java.util.Locale;
8+
9+
import static org.junit.Assert.*;
10+
import static org.mockito.Mockito.mock;
11+
import static org.mockito.Mockito.verify;
12+
13+
public class RefactorFirstMavenReportTest {
14+
15+
private RefactorFirstMavenReport mavenReport = new RefactorFirstMavenReport();
16+
private Sink sink;
17+
18+
@Before
19+
public void setUp() {
20+
sink = mock(Sink.class);
21+
}
22+
23+
@Test
24+
public void testGetOutputName() {
25+
// This report will generate simple-report.html when invoked in a project with `mvn site`
26+
assertEquals("refactor-first-report", mavenReport.getOutputName());
27+
}
28+
29+
@Test
30+
public void getName() {
31+
// Name of the report when listed in the project-reports.html page of a project
32+
assertEquals("Refactor First Report", mavenReport.getName(Locale.getDefault()));
33+
}
34+
35+
@Test
36+
public void getDescription() {
37+
// Description of the report when listed in the project-reports.html page of a project
38+
assertEquals("Ranks the disharmonies in a codebase. The classes that should be refactored first "
39+
+ " have the highest priority values.", mavenReport.getDescription(Locale.getDefault()));
40+
}
41+
42+
@Test
43+
public void drawTableHeaderCell() {
44+
mavenReport.drawTableHeaderCell("test", sink);
45+
verify(sink).tableHeaderCell();
46+
verify(sink).text("test");
47+
verify(sink).tableHeaderCell_();
48+
}
49+
50+
@Test
51+
public void drawTableCell() {
52+
mavenReport.drawTableCell("test", sink);
53+
verify(sink).tableCell();
54+
verify(sink).text("test");
55+
verify(sink).tableCell_();
56+
}
57+
58+
@Test
59+
public void generateChart() {
60+
}
61+
}

0 commit comments

Comments
 (0)