// Copyright 2017 Frédéric Guillot. All rights reserved.
// Use of this source code is governed by the Apache 2.0
// license that can be found in the LICENSE file.
package feed
import (
"bytes"
"testing"
)
func TestDetectRDF(t *testing.T) {
data := ``
format := DetectFeedFormat(bytes.NewBufferString(data))
if format != FormatRDF {
t.Errorf("Wrong format detected: %s instead of %s", format, FormatRDF)
}
}
func TestDetectRSS(t *testing.T) {
data := ``
format := DetectFeedFormat(bytes.NewBufferString(data))
if format != FormatRSS {
t.Errorf("Wrong format detected: %s instead of %s", format, FormatRSS)
}
}
func TestDetectAtom(t *testing.T) {
data := ``
format := DetectFeedFormat(bytes.NewBufferString(data))
if format != FormatAtom {
t.Errorf("Wrong format detected: %s instead of %s", format, FormatAtom)
}
}
func TestDetectAtomWithISOCharset(t *testing.T) {
data := ``
format := DetectFeedFormat(bytes.NewBufferString(data))
if format != FormatAtom {
t.Errorf("Wrong format detected: %s instead of %s", format, FormatAtom)
}
}
func TestDetectJSON(t *testing.T) {
data := `
{
"version" : "https://jsonfeed.org/version/1",
"title" : "Example"
}
`
format := DetectFeedFormat(bytes.NewBufferString(data))
if format != FormatJSON {
t.Errorf("Wrong format detected: %s instead of %s", format, FormatJSON)
}
}
func TestDetectUnknown(t *testing.T) {
data := `
`
format := DetectFeedFormat(bytes.NewBufferString(data))
if format != FormatUnknown {
t.Errorf("Wrong format detected: %s instead of %s", format, FormatUnknown)
}
}
func TestParseAtom(t *testing.T) {
data := `
Example Feed2003-12-13T18:30:02ZJohn Doeurn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6Atom-Powered Robots Run Amokurn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a2003-12-13T18:30:02ZSome text.`
feed, err := parseFeed(bytes.NewBufferString(data))
if err != nil {
t.Error(err)
}
if feed.Title != "Example Feed" {
t.Errorf("Incorrect title, got: %s", feed.Title)
}
}
func TestParseRSS(t *testing.T) {
data := `
Liftoff News
http://liftoff.msfc.nasa.gov/
Star City
http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp
How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>.Tue, 03 Jun 2003 09:39:21 GMThttp://liftoff.msfc.nasa.gov/2003/06/03.html#item573`
feed, err := parseFeed(bytes.NewBufferString(data))
if err != nil {
t.Error(err)
}
if feed.Title != "Liftoff News" {
t.Errorf("Incorrect title, got: %s", feed.Title)
}
}
func TestParseRDF(t *testing.T) {
data := `
RDF Example
http://example.org/
Title
http://example.org/item
Test`
feed, err := parseFeed(bytes.NewBufferString(data))
if err != nil {
t.Error(err)
}
if feed.Title != "RDF Example" {
t.Errorf("Incorrect title, got: %s", feed.Title)
}
}
func TestParseJson(t *testing.T) {
data := `{
"version": "https://jsonfeed.org/version/1",
"title": "My Example Feed",
"home_page_url": "https://example.org/",
"feed_url": "https://example.org/feed.json",
"items": [
{
"id": "2",
"content_text": "This is a second item.",
"url": "https://example.org/second-item"
},
{
"id": "1",
"content_html": "
Hello, world!
",
"url": "https://example.org/initial-post"
}
]
}`
feed, err := parseFeed(bytes.NewBufferString(data))
if err != nil {
t.Error(err)
}
if feed.Title != "My Example Feed" {
t.Errorf("Incorrect title, got: %s", feed.Title)
}
}
func TestParseUnknownFeed(t *testing.T) {
data := `
Title of document
some content
`
_, err := parseFeed(bytes.NewBufferString(data))
if err == nil {
t.Error("ParseFeed must returns an error")
}
}