Skip to content

Commit 35cd3ef

Browse files
committed
SiteParser.extractCategory(): add unit tests.
Addressed to #685 No functional changes.
1 parent 81c4b35 commit 35cd3ef

File tree

2 files changed

+70
-1
lines changed

2 files changed

+70
-1
lines changed

src/main/java/ru/mystamps/web/util/extractor/SiteParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public String toString() {
151151
return name;
152152
}
153153

154-
private String extractCategory(Element body) {
154+
protected String extractCategory(Element body) {
155155
String locator = ObjectUtils.firstNonNull(categoryLocator, shortDescriptionLocator);
156156
if (locator == null) {
157157
return null;

src/test/java/ru/mystamps/web/util/extractor/SiteParserTest.java

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
*/
1818
package ru.mystamps.web.util.extractor;
1919

20+
import org.jsoup.Jsoup;
21+
import org.jsoup.nodes.Document;
22+
import org.jsoup.nodes.Element;
23+
2024
import org.junit.Before;
2125
import org.junit.Rule;
2226
import org.junit.Test;
@@ -27,9 +31,11 @@
2731
import static io.qala.datagen.RandomShortApi.nullOr;
2832
import static io.qala.datagen.RandomShortApi.nullOrBlank;
2933
import static io.qala.datagen.RandomValue.between;
34+
3035
import static org.hamcrest.MatcherAssert.assertThat;
3136
import static org.hamcrest.Matchers.equalTo;
3237
import static org.hamcrest.Matchers.is;
38+
import static org.hamcrest.Matchers.nullValue;
3339

3440
public class SiteParserTest {
3541

@@ -285,6 +291,60 @@ public void toStringShouldReturnName() {
285291
assertThat(parser.toString(), equalTo(expectedName));
286292
}
287293

294+
//
295+
// Tests for extractCategory()
296+
//
297+
298+
@Test
299+
public void extractCategoryShouldReturnNullWhenLocatorsAreNotSet() {
300+
parser.setCategoryLocator(null);
301+
parser.setShortDescriptionLocator(null);
302+
Element doc = createEmptyDocument();
303+
304+
String category = parser.extractCategory(doc);
305+
306+
assertThat(category, is(nullValue()));
307+
}
308+
309+
@Test
310+
public void extractCategoryShouldReturnNullWhenElementNotFound() {
311+
parser.setCategoryLocator(Random.jsoupLocator());
312+
Element doc = createEmptyDocument();
313+
314+
String category = parser.extractCategory(doc);
315+
316+
assertThat(category, is(nullValue()));
317+
}
318+
319+
@Test
320+
public void extractCategoryShouldReturnTextOfCategoryLocator() {
321+
parser.setCategoryLocator("#category");
322+
323+
String expectedName = Random.categoryName();
324+
String html = String.format("<div id='category'>%s</div>", expectedName);
325+
Element doc = createDocumentFromText(html);
326+
327+
String category = parser.extractCategory(doc);
328+
329+
String msg = String.format("couldn't extract a category from '%s'", doc);
330+
assertThat(msg, category, equalTo(expectedName));
331+
}
332+
333+
@Test
334+
public void extractCategoryShouldReturnTextOfShortDescriptionLocator() {
335+
parser.setCategoryLocator(null);
336+
parser.setShortDescriptionLocator("#desc");
337+
338+
String expectedName = Random.categoryName();
339+
String html = String.format("<div id='desc'>%s</div>", expectedName);
340+
Element doc = createDocumentFromText(html);
341+
342+
String category = parser.extractCategory(doc);
343+
344+
String msg = String.format("couldn't extract a category from '%s'", doc);
345+
assertThat(msg, category, equalTo(expectedName));
346+
}
347+
288348
private static String describe(SiteParser parser) {
289349
StringBuilder sb = new StringBuilder();
290350
sb.append("SiteParser[name=")
@@ -307,4 +367,13 @@ private static String describe(SiteParser parser) {
307367
return sb.toString();
308368
}
309369

370+
private static Element createDocumentFromText(String html) {
371+
Document doc = Jsoup.parseBodyFragment(html);
372+
return doc.body();
373+
}
374+
375+
private static Element createEmptyDocument() {
376+
return createDocumentFromText("");
377+
}
378+
310379
}

0 commit comments

Comments
 (0)