Skip to content

Commit 620a81d

Browse files
committed
Fix tests
1 parent 5f2da8f commit 620a81d

File tree

10 files changed

+111
-77
lines changed

10 files changed

+111
-77
lines changed

asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParser.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.io.File;
66
import java.io.IOException;
77
import java.io.Reader;
8+
import java.util.List;
89
import java.util.logging.Logger;
910

1011
import org.apache.maven.doxia.parser.AbstractTextParser;
@@ -28,6 +29,7 @@
2829
import org.asciidoctor.maven.site.SiteConversionConfiguration;
2930
import org.asciidoctor.maven.site.SiteConversionConfigurationParser;
3031
import org.asciidoctor.maven.site.SiteLogHandlerDeserializer;
32+
import org.asciidoctor.maven.site.parser.processors.DescriptionListNodeProcessor;
3133
import org.codehaus.plexus.component.annotations.Component;
3234
import org.codehaus.plexus.util.IOUtil;
3335
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -82,7 +84,7 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept
8284
final Asciidoctor asciidoctor = Asciidoctor.Factory.create();
8385

8486
SiteConversionConfiguration conversionConfig = new SiteConversionConfigurationParser(project)
85-
.processAsciiDocConfig(siteConfig, defaultOptions(siteDirectory), defaultAttributes());
87+
.processAsciiDocConfig(siteConfig, defaultOptions(siteDirectory), defaultAttributes());
8688
for (String require : conversionConfig.getRequires()) {
8789
requireLibrary(asciidoctor, require);
8890
}
@@ -98,7 +100,7 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept
98100
try {
99101
// process log messages according to mojo configuration
100102
new LogRecordsProcessors(logHandler, siteDirectory, errorMessage -> logger.error(errorMessage))
101-
.processLogRecords(memoryLogHandler);
103+
.processLogRecords(memoryLogHandler);
102104

103105
} catch (Exception exception) {
104106
throw new ParseException(exception.getMessage(), exception);
@@ -146,15 +148,15 @@ protected File resolveSiteDirectory(MavenProject project, Xpp3Dom siteConfig) {
146148

147149
protected OptionsBuilder defaultOptions(File siteDirectory) {
148150
return Options.builder()
149-
.backend("xhtml")
150-
.safe(SafeMode.UNSAFE)
151-
.baseDir(new File(siteDirectory, ROLE_HINT));
151+
.backend("xhtml")
152+
.safe(SafeMode.UNSAFE)
153+
.baseDir(new File(siteDirectory, ROLE_HINT));
152154
}
153155

154156
protected AttributesBuilder defaultAttributes() {
155157
return Attributes.builder()
156-
.attribute("idprefix", "@")
157-
.attribute("showtitle", "@");
158+
.attribute("idprefix", "@")
159+
.attribute("showtitle", "@");
158160
}
159161

160162
private void requireLibrary(Asciidoctor asciidoctor, String require) {

asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/NodeSinker.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.asciidoctor.maven.site.parser.processors.UnorderedListNodeProcessor;
2121

2222
/**
23+
* Factory and repository for NodeProcessors.
24+
*
2325
* @author abelsromero
2426
* @since 3.1.0
2527
*/
@@ -29,7 +31,6 @@ public class NodeSinker {
2931

3032
private final NodeProcessor noOpProcessor;
3133

32-
// TODO this should not be public
3334
public NodeSinker(Sink sink) {
3435
nodeProcessors = Arrays.asList(
3536
new DescriptionListNodeProcessor(sink, this),

asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/processors/DocumentNodeProcessor.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import org.asciidoctor.maven.site.parser.NodeProcessor;
66
import org.asciidoctor.maven.site.parser.NodeSinker;
77

8+
import static org.asciidoctor.maven.commons.StringUtils.isNotBlank;
9+
810
/**
911
* Root document processor.
1012
*
@@ -32,11 +34,12 @@ public void process(StructuralNode node) {
3234
final Sink sink = getSink();
3335

3436
sink.body();
35-
// TODO review how this fits with Section titles also being 1
36-
sink.sectionTitle1();
37-
sink.rawText(node.getTitle());
38-
sink.sectionTitle1_();
39-
37+
String title = node.getTitle();
38+
if (isNotBlank(title)) {
39+
sink.sectionTitle1();
40+
sink.rawText(title);
41+
sink.sectionTitle1_();
42+
}
4043
node.getBlocks()
4144
.forEach(this::sink);
4245

asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/processors/LiteralNodeProcessor.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.apache.maven.doxia.sink.Sink;
44
import org.asciidoctor.ast.StructuralNode;
55
import org.asciidoctor.jruby.ast.impl.BlockImpl;
6+
import org.asciidoctor.maven.commons.StringUtils;
67
import org.asciidoctor.maven.site.parser.NodeProcessor;
78
import org.asciidoctor.maven.site.parser.NodeSinker;
89

@@ -33,10 +34,13 @@ public boolean applies(StructuralNode node) {
3334
public void process(StructuralNode node) {
3435
final Sink sink = getSink();
3536

36-
sink.division();
37-
sink.rawText("<pre>");
38-
sink.rawText(((BlockImpl) node).getSource());
39-
sink.rawText("</pre>");
40-
sink.division_();
37+
String source = ((BlockImpl) node).getSource();
38+
if (StringUtils.isNotBlank(source)) {
39+
sink.division();
40+
sink.rawText("<pre>");
41+
sink.rawText(source);
42+
sink.rawText("</pre>");
43+
sink.division_();
44+
}
4145
}
4246
}

asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParserTest.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package org.asciidoctor.maven.site.parser;
22

3+
import java.io.File;
4+
import java.io.FileNotFoundException;
5+
import java.io.FileReader;
6+
import java.io.StringReader;
7+
import java.io.StringWriter;
8+
39
import lombok.SneakyThrows;
410
import org.apache.maven.doxia.parser.AbstractTextParser;
511
import org.apache.maven.doxia.parser.ParseException;
@@ -10,8 +16,6 @@
1016
import org.junit.jupiter.api.Test;
1117
import org.mockito.Mockito;
1218

13-
import java.io.*;
14-
1519
import static org.asciidoctor.maven.site.parser.AsciidoctorAstDoxiaParserTest.TestMocks.mockAsciidoctorDoxiaParser;
1620
import static org.asciidoctor.maven.site.parser.processors.test.ReflectionUtils.extractField;
1721
import static org.asciidoctor.maven.site.parser.processors.test.StringTestUtils.clean;
@@ -45,17 +49,23 @@ void should_convert_html_without_any_configuration() throws FileNotFoundExceptio
4549

4650
assertThat(result)
4751
.isEqualTo("<h1>Document Title</h1><p>Preamble paragraph.</p>" +
52+
"<div>"+
4853
"<h2><a id=\"id_section_a\"></a>Section A</h2>" +
4954
"<p><strong>Section A</strong> paragraph.</p>" +
55+
"<div>"+
5056
"<h3><a id=\"id_section_a_subsection\"></a>Section A Subsection</h3>" +
5157
"<p><strong>Section A</strong> 'subsection' paragraph.</p>" +
58+
"</div>"+
59+
"</div>"+
60+
"<div>"+
5261
"<h2><a id=\"id_section_b\"></a>Section B</h2>" +
5362
"<p><strong>Section B</strong> paragraph.</p>" +
5463
"<ul>" +
5564
"<li>Item 1</li>" +
5665
"<li>Item 2</li>" +
5766
"<li>Item 3</li></ul>" +
58-
"<div class=\"source\"><pre class=\"prettyprint\"><code>require 'asciidoctor'</code></pre></div>");
67+
"<div class=\"source\"><pre class=\"prettyprint\"><code>require 'asciidoctor'</code></pre></div>" +
68+
"</div>");
5969
}
6070

6171
@Test

asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/NodeSinkerTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.List;
55

66
import org.apache.maven.doxia.sink.Sink;
7+
import org.asciidoctor.ast.Block;
78
import org.asciidoctor.ast.Document;
89
import org.asciidoctor.ast.ListItem;
910
import org.asciidoctor.ast.StructuralNode;
@@ -27,7 +28,6 @@ class NodeSinkerTest {
2728
private NodeSinker nodeSinker;
2829
private StringWriter sinkWriter;
2930

30-
3131
@BeforeEach
3232
void setup() throws NoSuchFieldException, IllegalAccessException {
3333
Sink sink = createSink();
@@ -53,6 +53,7 @@ void should_not_fail_when_processing_invalid_node() {
5353
@Test
5454
void should_process_document_node() {
5555
StructuralNode mockNode = mockNode("document");
56+
Mockito.when(mockNode.getTitle()).thenReturn("Something");
5657

5758
nodeSinker.sink(mockNode);
5859

@@ -171,6 +172,9 @@ private static StructuralNode mockNode(String nodeName) {
171172
private static <T> T mockNode(String nodeName, Class<? extends StructuralNode> clazz) {
172173
StructuralNode mockNode = Mockito.mock(clazz);
173174
Mockito.when(mockNode.getNodeName()).thenReturn(nodeName);
175+
if (Block.class.isAssignableFrom(clazz)) {
176+
Mockito.when(((Block) mockNode).getSource()).thenReturn("Something");
177+
}
174178
return (T) mockNode;
175179
}
176180
}

asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/DocumentNodeProcessorTest.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package org.asciidoctor.maven.site.parser.processors;
22

3+
import java.io.StringWriter;
4+
35
import org.asciidoctor.Asciidoctor;
46
import org.asciidoctor.Options;
57
import org.asciidoctor.ast.StructuralNode;
68
import org.asciidoctor.maven.site.parser.NodeProcessor;
79
import org.asciidoctor.maven.site.parser.processors.test.NodeProcessorTest;
810
import org.junit.jupiter.api.Test;
911

10-
import java.io.StringWriter;
11-
1212
import static org.assertj.core.api.Assertions.assertThat;
1313

1414
@NodeProcessorTest(DocumentNodeProcessor.class)
@@ -18,14 +18,24 @@ class DocumentNodeProcessorTest {
1818
private NodeProcessor nodeProcessor;
1919
private StringWriter sinkWriter;
2020

21+
@Test
22+
void should_not_fail_if_document_is_empty() {
23+
String content = "";
24+
25+
String html = process(content, 0);
26+
27+
assertThat(html)
28+
.isEmpty();
29+
}
30+
2131
@Test
2232
void should_convert_document_title() {
2333
String content = "= Document tile";
2434

2535
String html = process(content, 0);
2636

2737
assertThat(html)
28-
.isEqualTo("<h1>Document tile</h1>");
38+
.isEqualTo("<h1>Document tile</h1>");
2939
}
3040

3141
@Test
@@ -35,7 +45,7 @@ void should_convert_document_title_with_markup() {
3545
String html = process(content, 0);
3646

3747
assertThat(html)
38-
.isEqualTo("<h1><strong>Document</strong> <em>tile</em></h1>");
48+
.isEqualTo("<h1><strong>Document</strong> <em>tile</em></h1>");
3949
}
4050

4151
private String process(String content, int level) {

asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/ListItemNodeProcessorTest.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.asciidoctor.maven.site.parser.processors;
22

3+
import java.io.StringWriter;
4+
import java.util.Collections;
5+
36
import org.asciidoctor.Asciidoctor;
47
import org.asciidoctor.Options;
58
import org.asciidoctor.ast.StructuralNode;
@@ -9,9 +12,6 @@
912
import org.junit.jupiter.params.ParameterizedTest;
1013
import org.junit.jupiter.params.provider.ValueSource;
1114

12-
import java.io.StringWriter;
13-
import java.util.Collections;
14-
1515
import static org.assertj.core.api.Assertions.assertThat;
1616

1717
@NodeProcessorTest(ListItemNodeProcessor.class)
@@ -25,51 +25,51 @@ class ListItemNodeProcessorTest {
2525
@ValueSource(strings = {"*", "-"})
2626
void should_convert_list_item(String marker) {
2727
String content = new DocumentBuilder()
28-
.listItem(marker)
29-
.toString();
28+
.listItem(marker)
29+
.toString();
3030

3131
String html = process(content);
3232

3333
assertThat(html)
34-
.isEqualTo(htmlListItem());
34+
.isEqualTo(htmlListItem());
3535
}
3636

3737
@Test
3838
void should_convert_ordered_list_item() {
3939
String content = new DocumentBuilder()
40-
.listItem(".")
41-
.toString();
40+
.listItem(".")
41+
.toString();
4242

4343
String html = process(content);
4444

4545
assertThat(html)
46-
.isEqualTo(htmlListItem());
46+
.isEqualTo(htmlListItem());
4747
}
4848

4949
@ParameterizedTest
5050
@ValueSource(strings = {"*", "-"})
5151
void should_convert_ordered_list_item_with_formatting() {
5252
String content = new DocumentBuilder()
53-
.formattedListItem("*")
54-
.toString();
53+
.formattedListItem("*")
54+
.toString();
5555

5656
String html = process(content);
5757

5858
assertThat(html)
59-
.isEqualTo(htmlListItemWithFormatting());
59+
.isEqualTo(htmlListItemWithFormatting());
6060
}
6161

6262
@ParameterizedTest
6363
@ValueSource(strings = {"*", "-"})
6464
void should_convert_ordered_list_item_with_link(String marker) {
6565
String content = new DocumentBuilder()
66-
.linkListItem(marker)
67-
.toString();
66+
.linkListItem(marker)
67+
.toString();
6868

6969
String html = process(content);
7070

7171
assertThat(html)
72-
.isEqualTo(htmlListItemWithLink());
72+
.isEqualTo(htmlListItemWithLink());
7373
}
7474

7575
private static String htmlListItem() {
@@ -116,8 +116,8 @@ public String toString() {
116116

117117
private String process(String content) {
118118
StructuralNode node = asciidoctor.load(content, Options.builder().build())
119-
.findBy(Collections.singletonMap("context", ":list_item"))
120-
.get(0);
119+
.findBy(Collections.singletonMap("context", ":list_item"))
120+
.get(0);
121121

122122
nodeProcessor.process(node);
123123

asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/LiteralNodeProcessorTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,18 @@ void should_convert_simple_literal() {
2626
String html = process(content);
2727

2828
assertThat(html)
29-
.isEqualTo("<div><pre>This is a literal line.</pre></div>");
29+
.isEqualTo("<div><pre>This is a literal line.</pre></div>");
3030
}
3131

3232
private String documentWithLiteralBlock() {
3333
return "= Document tile\n\n"
34-
+ "== Section\n\n This is a literal line.\n";
34+
+ "== Section\n\n This is a literal line.\n";
3535
}
3636

3737
private String process(String content) {
3838
StructuralNode node = asciidoctor.load(content, Options.builder().build())
39-
.findBy(Collections.singletonMap("context", ":literal"))
40-
.get(0);
39+
.findBy(Collections.singletonMap("context", ":literal"))
40+
.get(0);
4141

4242
nodeProcessor.process(node);
4343

0 commit comments

Comments
 (0)