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") } } } }