package linkinfo import ( "strings" "testing" ) func TestLinkInfoApi_detectContentType(t *testing.T) { api := New() contentType := api.detectContentType("http://example.com", "") if contentType == "" { t.Fatal("Unable to test example.com, returned empty type") } if idx := strings.Index(contentType, ";"); idx != -1 { contentType = contentType[:idx] } if contentType != contentTypeHtml { t.Fatal("Unexpected content type:", contentType) } } func TestLinkInfoApi_defaultLinkHandler(t *testing.T) { type expectedData struct { Link string Title string Type string } testLinks := []expectedData{ {"http://example.com", "Example Domain", "text/html"}, {"http://techslides.com/demos/sample-videos/small.mp4", "", "video/mp4"}, } api := New() for _, link := range testLinks { l, err := api.DefaultLinkHandler(link.Link) if err != nil { t.Fatal("Unable to retrieve link info:", err) } if link.Title != "" && link.Title != l.Title { t.Fatal("Unexpected title, expected:", link.Title, "got:", l.Title) } if link.Type != "" && link.Type != l.ContentType { t.Fatal("Unexpected content type, expected:", link.Type, "got:", l.ContentType) } } } func TestLinkInfoApi_retrieveHtmlLinkTitle(t *testing.T) { ret := &LinkInfo{} api := New() if err := api.retrieveHtmlLinkTitle(ret, "http://example.com"); err != nil { t.Fatal("Unable to retrieve html link title:", err) } if ret.Title != "Example Domain" { t.Fatal("Unexpected title", ret.Title) } }