diff --git a/webmagic-extension/src/test/java/us/codecraft/webmagic/formatter/DateFormatterTest.java b/webmagic-extension/src/test/java/us/codecraft/webmagic/formatter/DateFormatterTest.java index a621e2d..fa276cb 100644 --- a/webmagic-extension/src/test/java/us/codecraft/webmagic/formatter/DateFormatterTest.java +++ b/webmagic-extension/src/test/java/us/codecraft/webmagic/formatter/DateFormatterTest.java @@ -1,10 +1,14 @@ package us.codecraft.webmagic.formatter; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; import org.junit.Test; import us.codecraft.webmagic.model.formatter.DateFormatter; import java.util.Date; +import static org.assertj.core.api.Assertions.assertThat; + /** * @author code4crafter@gmail.com */ @@ -13,8 +17,10 @@ public class DateFormatterTest { @Test public void testDateFormatter() throws Exception { DateFormatter dateFormatter = new DateFormatter(); - dateFormatter.initParam(new String[]{"yyyy-MM-dd HH:mm"}); - Date format = dateFormatter.format("2013-09-10 22:11"); - System.out.println(format); + String pattern = "yyyy-MM-dd HH:mm"; + Date date = DateUtils.parseDate("2013-09-10 22:11", new String[]{pattern}); + dateFormatter.initParam(new String[]{pattern}); + Date format = dateFormatter.format(DateFormatUtils.format(date, pattern)); + assertThat(format).isEqualTo(date); } } diff --git a/webmagic-extension/src/test/java/us/codecraft/webmagic/model/ModelPageProcessorTest.java b/webmagic-extension/src/test/java/us/codecraft/webmagic/model/ModelPageProcessorTest.java index 7733d4c..48f6073 100644 --- a/webmagic-extension/src/test/java/us/codecraft/webmagic/model/ModelPageProcessorTest.java +++ b/webmagic-extension/src/test/java/us/codecraft/webmagic/model/ModelPageProcessorTest.java @@ -1,14 +1,18 @@ package us.codecraft.webmagic.model; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.time.DateFormatUtils; import org.junit.Test; import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Request; import us.codecraft.webmagic.model.annotation.ExtractBy; +import us.codecraft.webmagic.model.annotation.Formatter; import us.codecraft.webmagic.model.annotation.TargetUrl; +import us.codecraft.webmagic.model.formatter.DateFormatter; import us.codecraft.webmagic.selector.PlainText; import java.io.IOException; +import java.util.Date; import static org.assertj.core.api.Assertions.assertThat; @@ -34,6 +38,17 @@ public class ModelPageProcessorTest { } + public static class ModelDate { + + @Formatter(value = "yyyyMMdd", formatter = DateFormatter.class) + @ExtractBy(value = "//div[@class='date']/text()", notNull = true) + private Date date; + + public Date getDate() { + return date; + } + } + @Test public void testMultiModel_should_not_skip_when_match() throws Exception { Page page = new Page(); @@ -54,6 +69,15 @@ public class ModelPageProcessorTest { } + @Test + public void testExtractDate() throws Exception { + ModelPageProcessor modelPageProcessor = ModelPageProcessor.create(null, ModelDate.class); + Page page = getMockPage(); + modelPageProcessor.process(page); + ModelDate modelDate = (ModelDate) page.getResultItems().get(ModelDate.class.getCanonicalName()); + assertThat(DateFormatUtils.format(modelDate.getDate(),"yyyyMMdd")).isEqualTo("20170603"); + } + private Page getMockPage() throws IOException { Page page = new Page(); page.setRawText(IOUtils.toString(getClass().getClassLoader().getResourceAsStream("html/mock-webmagic.html"))); diff --git a/webmagic-extension/src/test/resources/html/mock-webmagic.html b/webmagic-extension/src/test/resources/html/mock-webmagic.html index 436e1e0..d6039f9 100644 --- a/webmagic-extension/src/test/resources/html/mock-webmagic.html +++ b/webmagic-extension/src/test/resources/html/mock-webmagic.html @@ -5,6 +5,7 @@