Compare commits

..

No commits in common. "d4041140d2542a2cc8ee47e8f21d866e7bc4a238" and "01f7904b148e3454809a7085373e91c412019b0b" have entirely different histories.

3 changed files with 25 additions and 40 deletions

4
feed/export_test.go Normal file
View File

@ -0,0 +1,4 @@
package feed
var FetchPage = fetchPage
var ParseTime = parseTime

View File

@ -73,9 +73,6 @@ func parseTime(timestr string) (time.Time, error) {
time.RFC3339Nano, time.RFC3339Nano,
time.DateTime, time.DateTime,
time.DateOnly, time.DateOnly,
"2006-01-02 15:04",
"2006-01-02T15:04:05",
"2006-01-02T15:04",
} }
var pagetime time.Time var pagetime time.Time
var err error var err error
@ -118,10 +115,9 @@ func (f *FeedItem) ParseContent(content string) error {
} }
etitle, err := getHtmlElement(doc, "title") etitle, err := getHtmlElement(doc, "title")
if err != nil { if err != nil {
f.Title = "" return err
} else {
f.Title = etitle.FirstChild.Data
} }
f.Title = etitle.FirstChild.Data
var articleBuilder strings.Builder var articleBuilder strings.Builder
html.Render(&articleBuilder, earticle) html.Render(&articleBuilder, earticle)

View File

@ -3,65 +3,50 @@ package feed_test
import ( import (
"testing" "testing"
"time" "time"
"git.32bit.cafe/yequari/webweav.ing/feed" "git.32bit.cafe/yequari/webweav.ing/feed"
) )
func TestTimeParsing(t *testing.T) { func TestArticleParse(t *testing.T) {
testDate, err := time.Parse("2006-Jan-02 15:04:05 -7", "2004-May-14 07:30:55 -7") testDate, err := time.Parse("2006-Jan-02", "2004-May-14")
if err != nil { if err != nil {
t.Errorf("creating test date failed: %s", err) t.Errorf("creating test date failed: %s", err)
} }
var tests = []struct { var tests = []struct {
name string name string
input string input string
format string want_time *time.Time
want_article string
}{ }{
{ {
"YYYY-MM-DD", "article stripped out of basic HTML",
`<html><head></head><body><article><time datetime="2004-05-14">May 14 2004</time>hello world</article></body></html>`, "<html><head></head><body><article>hello world</article></body></html>",
time.DateOnly, nil,
"<article>hello world</article>",
}, },
{ {
"YYYY-MM-DD HH:MM", "article and time stripped out of basic HTML",
`<html><head></head><body><article><time datetime="2004-05-14 07:30">May 14 2004</time>hello world</article></body></html>`, "<html><head></head><body><article><time datetime=\"2004-05-14\">May 14 2004</time>hello world</article></body></html>",
"2006-01-02 15:04", &testDate,
}, "<article><time datetime=\"2004-05-14\">May 14 2004</time>hello world</article>",
{
"YYYY-MM-DD HH:MM:SS",
`<html><head></head><body><article><time datetime="2004-05-14 07:30:55">May 14 2004</time>hello world</article></body></html>`,
"2006-01-02 15:04:05",
},
{
"YYYY-MM-DDTHH:MM:SS",
`<html><head></head><body><article><time datetime="2004-05-14T07:30:55">May 14 2004</time>hello world</article></body></html>`,
"2006-01-02T15:04:05",
},
{
"YYYY-MM-DDTHH:MM",
`<html><head></head><body><article><time datetime="2004-05-14T07:30">May 14 2004</time>hello world</article></body></html>`,
"2006-01-02T15:04",
}, },
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func (t *testing.T) { t.Run(tt.name, func (t *testing.T) {
item := feed.FeedItem{} article, articleTime, err := feed.ParseArticle(tt.input)
err := item.ParseContent(tt.input)
if err != nil { if err != nil {
t.Errorf("error: %s", err) t.Errorf("error: %s", err)
} }
if article != tt.want_article {
actualTime := item.PubTime.Format(tt.format) t.Errorf("got %s, want %s", article, tt.want_article)
expectedTime := testDate.Format(tt.format) }
if actualTime != expectedTime { if tt.want_time != nil && !articleTime.Equal(*tt.want_time) {
t.Errorf("got %s, want %s", actualTime, expectedTime) t.Errorf("got %s, want %s", articleTime, *tt.want_time)
} }
}) })
} }
} }
func TestParseFeedItem(t *testing.T) { func TestParseFeedItem(t *testing.T) {
testDate, err := time.Parse("2006-Jan-02", "2004-May-14") testDate, err := time.Parse("2006-Jan-02", "2004-May-14")
if err != nil { if err != nil {