1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.doxia.siterenderer;
20
21 import java.util.Iterator;
22
23 import org.htmlunit.html.HtmlAnchor;
24 import org.htmlunit.html.HtmlCode;
25 import org.htmlunit.html.HtmlDefinitionTerm;
26 import org.htmlunit.html.HtmlElement;
27 import org.htmlunit.html.HtmlHeading1;
28 import org.htmlunit.html.HtmlListItem;
29 import org.htmlunit.html.HtmlMain;
30 import org.htmlunit.html.HtmlOrderedList;
31 import org.htmlunit.html.HtmlPage;
32 import org.htmlunit.html.HtmlPreformattedText;
33
34 import static org.junit.jupiter.api.Assertions.assertEquals;
35 import static org.junit.jupiter.api.Assertions.assertFalse;
36 import static org.junit.jupiter.api.Assertions.assertNotNull;
37
38
39
40
41
42 @SuppressWarnings("MethodLength")
43 public class FaqVerifier extends AbstractVerifier {
44
45 public void verify(String file) throws Exception {
46 HtmlPage page = htmlPage(file);
47 assertNotNull(page);
48
49 HtmlElement element = page.getHtmlElementById("contentBox");
50 assertNotNull(element);
51 HtmlMain main = (HtmlMain) element;
52 assertNotNull(main);
53
54 Iterator<HtmlElement> elementIterator = main.getHtmlElementDescendants().iterator();
55
56
57
58
59
60 elementIterator.next();
61
62 HtmlAnchor a = (HtmlAnchor) elementIterator.next();
63 assertEquals("top", a.getAttribute("id"));
64
65 HtmlHeading1 h1 = (HtmlHeading1) elementIterator.next();
66 assertEquals("Often Asked Questions", h1.asNormalizedText().trim());
67
68 elementIterator.next();
69 element = elementIterator.next();
70 assertEquals("b", element.getTagName());
71 assertEquals("Contributing", element.asNormalizedText().trim());
72
73 HtmlOrderedList ol = (HtmlOrderedList) elementIterator.next();
74 assertEquals(
75 "One stupid question & a silly answer?",
76 ol.getFirstElementChild().asNormalizedText().trim());
77
78 HtmlListItem li = (HtmlListItem) elementIterator.next();
79 assertEquals(
80 "One stupid question & a silly answer?",
81 li.getFirstElementChild().asNormalizedText().trim());
82
83 a = (HtmlAnchor) elementIterator.next();
84 assertEquals("#stupid-question", a.getAttribute("href"));
85
86 element = elementIterator.next();
87 assertEquals("b", element.getTagName());
88 assertEquals("stupid", element.asNormalizedText().trim());
89
90 elementIterator.next();
91 element = elementIterator.next();
92 assertEquals("b", element.getTagName());
93 assertEquals("Using Maven", element.asNormalizedText().trim());
94
95 ol = (HtmlOrderedList) elementIterator.next();
96 assertEquals(
97 "How do I disable a report on my site?",
98 ol.getFirstElementChild().asNormalizedText().trim());
99
100 li = (HtmlListItem) elementIterator.next();
101 assertNotNull(li);
102 assertEquals(
103 "How do I disable a report on my site?",
104 li.getFirstElementChild().asNormalizedText().trim());
105
106 a = (HtmlAnchor) elementIterator.next();
107 assertEquals("#disable-reports", a.getAttribute("href"));
108
109 elementIterator.next();
110
111 a = (HtmlAnchor) elementIterator.next();
112 assertEquals("contributing", a.getAttribute("id"));
113
114 h1 = (HtmlHeading1) elementIterator.next();
115 assertEquals("Contributing", h1.asNormalizedText().trim());
116
117 elementIterator.next();
118
119 a = (HtmlAnchor) elementIterator.next();
120 assertEquals("stupid-question", a.getAttribute("id"));
121
122 HtmlDefinitionTerm dt = (HtmlDefinitionTerm) elementIterator.next();
123 assertEquals(
124 "One stupid question & a silly answer?", dt.asNormalizedText().trim());
125
126 element = elementIterator.next();
127 assertEquals("b", element.getTagName());
128 assertEquals("stupid", element.asNormalizedText().trim());
129
130 elementIterator.next();
131
132 elementIterator.next();
133
134 a = (HtmlAnchor) elementIterator.next();
135 assertEquals("#using", a.getAttribute("href"));
136 assertEquals("local link", a.asNormalizedText().trim());
137
138 a = (HtmlAnchor) elementIterator.next();
139 assertEquals("./cdc.html", a.getAttribute("href"));
140 assertEquals("source document", a.asNormalizedText().trim());
141
142 a = (HtmlAnchor) elementIterator.next();
143 assertEquals("http://maven.apache.org/?l=a&m=b", a.getAttribute("href"));
144 assertEquals("external link", a.asNormalizedText().trim());
145
146 element = elementIterator.next();
147 assertEquals("i", element.getTagName());
148 assertEquals("italic", element.asNormalizedText().trim());
149
150 element = elementIterator.next();
151 assertEquals("b", element.getTagName());
152 assertEquals("non-US-ASCII characters: àéèç", element.asNormalizedText().trim());
153
154 elementIterator.next();
155
156 a = (HtmlAnchor) elementIterator.next();
157 assertEquals("#top", a.getAttribute("href"));
158 assertEquals("[top]", a.asNormalizedText().trim());
159
160 elementIterator.next();
161
162 a = (HtmlAnchor) elementIterator.next();
163 assertEquals("using", a.getAttribute("id"));
164
165 h1 = (HtmlHeading1) elementIterator.next();
166 assertEquals("Using Maven", h1.asNormalizedText().trim());
167
168 elementIterator.next();
169
170 a = (HtmlAnchor) elementIterator.next();
171 assertEquals("disable-reports", a.getAttribute("id"));
172
173 dt = (HtmlDefinitionTerm) elementIterator.next();
174 assertEquals(
175 "How do I disable a report on my site?",
176 dt.getFirstChild().asNormalizedText().trim());
177
178 elementIterator.next();
179
180 elementIterator.next();
181
182 element = elementIterator.next();
183 assertEquals("code", element.getTagName());
184 assertEquals("<source></source>", element.asNormalizedText().trim());
185
186 HtmlPreformattedText pre = (HtmlPreformattedText) elementIterator.next();
187 assertNotNull(pre);
188 HtmlCode code = (HtmlCode) elementIterator.next();
189 assertEquals("<source>1.5</source>", code.asNormalizedText().trim());
190
191 elementIterator.next();
192
193 a = (HtmlAnchor) elementIterator.next();
194 assertEquals("#top", a.getAttribute("href"));
195 assertEquals("[top]", a.asNormalizedText().trim());
196
197 assertFalse(elementIterator.hasNext());
198 }
199 }