Skip to content

Commit ecfdd3c

Browse files
committed
SiteParser.parse(): add unit tests.
Addressed to #685 No functional changes.
1 parent 1583e82 commit ecfdd3c

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

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

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

20+
import lombok.EqualsAndHashCode;
2021
import lombok.Getter;
2122
import lombok.Setter;
23+
import lombok.ToString;
2224

2325
/**
2426
* Representation of a series info.
2527
*/
2628
@Getter
2729
@Setter
30+
@ToString
31+
@EqualsAndHashCode
2832
public class SeriesInfo {
2933
private String categoryName;
3034
private String countryName;

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

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,101 @@ public void parseShouldRequireNonBlankPageContent() {
292292
parser.parse(nullOrBlank());
293293
}
294294

295+
@Test
296+
public void parseShouldExtractSeriesInfo() {
297+
String baseUri = "http://base.uri";
298+
String expectedCategory = Random.categoryName();
299+
String expectedCountry = Random.countryName();
300+
String expectedIssueDate = Random.issueYear().toString();
301+
String imageUrl = String.format(
302+
"/%s-%s-%s.png",
303+
expectedCountry.toLowerCase(),
304+
expectedCategory.toLowerCase(),
305+
expectedIssueDate
306+
);
307+
String expectedImageUrl = baseUri + imageUrl;
308+
309+
parser.setMatchedUrl(baseUri);
310+
parser.setCategoryLocator("#category-name");
311+
parser.setCountryLocator("#country-name");
312+
parser.setIssueDateLocator("#issue-date");
313+
parser.setImageUrlLocator("#image-url");
314+
315+
SeriesInfo expectedInfo = new SeriesInfo();
316+
expectedInfo.setCategoryName(expectedCategory);
317+
expectedInfo.setCountryName(expectedCountry);
318+
expectedInfo.setIssueDate(expectedIssueDate);
319+
expectedInfo.setImageUrl(expectedImageUrl);
320+
321+
String html = String.format(
322+
"<html>"
323+
+ "<body>"
324+
+ "<p id='category-name'>%s</p>"
325+
+ "<p id='country-name'>%s</p>"
326+
+ "<p id='issue-date'>%s</p>"
327+
+ "<a id='image-url' href='%s'>look at image</a>"
328+
+ "</body>"
329+
+ "</html",
330+
expectedCategory,
331+
expectedCountry,
332+
expectedIssueDate,
333+
imageUrl
334+
);
335+
336+
SeriesInfo info = parser.parse(html);
337+
338+
assertThat(info, is(equalTo(expectedInfo)));
339+
}
340+
@Test
341+
public void parseShouldExtractSeriesInfoFromFirstMatchedElements() {
342+
String baseUri = "http://base.uri";
343+
String expectedCategory = Random.categoryName();
344+
String expectedCountry = Random.countryName();
345+
String expectedIssueDate = Random.issueYear().toString();
346+
String imageUrl = String.format(
347+
"/%s-%s-%s.png",
348+
expectedCountry.toLowerCase(),
349+
expectedCategory.toLowerCase(),
350+
expectedIssueDate
351+
);
352+
String expectedImageUrl = baseUri + imageUrl;
353+
354+
parser.setMatchedUrl(baseUri);
355+
parser.setCategoryLocator("h1");
356+
parser.setCountryLocator("p");
357+
parser.setIssueDateLocator("span");
358+
parser.setImageUrlLocator("a");
359+
360+
SeriesInfo expectedInfo = new SeriesInfo();
361+
expectedInfo.setCategoryName(expectedCategory);
362+
expectedInfo.setCountryName(expectedCountry);
363+
expectedInfo.setIssueDate(expectedIssueDate);
364+
expectedInfo.setImageUrl(expectedImageUrl);
365+
366+
String html = String.format(
367+
"<html>"
368+
+ "<body>"
369+
+ "<h1>%s</h1>"
370+
+ "<p>%s</p>"
371+
+ "<span>%s</span>"
372+
+ "<a href='%s'>look at image</a>"
373+
+ "<h1>ignored</h1>"
374+
+ "<p>ignored</p>"
375+
+ "<span>ignored</span>"
376+
+ "<a href='none'>look at image</a>"
377+
+ "</body>"
378+
+ "</html",
379+
expectedCategory,
380+
expectedCountry,
381+
expectedIssueDate,
382+
expectedImageUrl
383+
);
384+
385+
SeriesInfo info = parser.parse(html);
386+
387+
assertThat(info, is(equalTo(expectedInfo)));
388+
}
389+
295390
//
296391
// Tests for toString()
297392
//

0 commit comments

Comments
 (0)