package opengraph_test
import (
"strings"
"testing"
"time"
"github.com/dyatlov/go-opengraph/opengraph"
)
const html = `
WordPress › WordPress 4.3 “Billie”
`
func BenchmarkOpenGraph_ProcessHTML(b *testing.B) {
og := opengraph.NewOpenGraph()
b.ReportAllocs()
b.SetBytes(int64(len(html)))
for i := 0; i < b.N; i++ {
if err := og.ProcessHTML(strings.NewReader(html)); err != nil {
b.Fatal(err)
}
}
}
func TestOpenGraphProcessHTML(t *testing.T) {
og := opengraph.NewOpenGraph()
err := og.ProcessHTML(strings.NewReader(html))
if err != nil {
t.Fatal(err)
}
if og.Type != "article" {
t.Error("type parsed incorrectly")
}
if len(og.Title) == 0 {
t.Error("title parsed incorrectly")
}
if len(og.URL) == 0 {
t.Error("url parsed incorrectly")
}
if len(og.Description) == 0 {
t.Error("description parsed incorrectly")
}
if len(og.Images) == 0 {
t.Error("images parsed incorrectly")
} else {
if len(og.Images[0].URL) == 0 {
t.Error("image url parsed incorrectly")
}
}
if len(og.Locale) == 0 {
t.Error("locale parsed incorrectly")
}
if len(og.SiteName) == 0 {
t.Error("site name parsed incorrectly")
}
if og.Article == nil {
t.Error("articles parsed incorrectly")
} else {
ev, _ := time.Parse(time.RFC3339, "2015-08-18T19:12:38+00:00")
if !og.Article.PublishedTime.Equal(ev) {
t.Error("article published time parsed incorrectly")
}
}
}
func TestOpenGraphProcessMeta(t *testing.T) {
og := opengraph.NewOpenGraph()
og.ProcessMeta(map[string]string{"property": "og:type", "content": "book"})
if og.Type != "book" {
t.Error("wrong og:type processing")
}
og.ProcessMeta(map[string]string{"property": "book:isbn", "content": "123456"})
if og.Book == nil {
t.Error("wrong book type processing")
} else {
if og.Book.ISBN != "123456" {
t.Error("wrong book isbn processing")
}
}
og.ProcessMeta(map[string]string{"property": "article:section", "content": "testsection"})
if og.Article != nil {
t.Error("article processed when it should not be")
}
og.ProcessMeta(map[string]string{"property": "book:author:first_name", "content": "John"})
if og.Book != nil {
if len(og.Book.Authors) == 0 {
t.Error("book author was not processed")
} else {
if og.Book.Authors[0].FirstName != "John" {
t.Error("author first name was processed incorrectly")
}
}
}
}