package api import ( "context" "net/http" "net/http/httptest" "reflect" "testing" ) func TestParseMotivationsIncludesTaggedAnnotations(t *testing.T) { want := []string{"commenting", "tagging"} if got := parseMotivations("commenting"); !reflect.DeepEqual(got, want) { t.Fatalf("parseMotivations(commenting) = %v, want %v", got, want) } } func TestFetchURLMetadataExtractsAtCanonical(t *testing.T) { page := ` Test Page ` server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Write([]byte(page)) })) defer server.Close() h := &Handler{} data := h.fetchURLMetadata(context.Background(), server.URL) if data["title"] != "OG Title" { t.Fatalf("title = %q, want %q", data["title"], "OG Title") } want := "at://did:plc:abc123/app.bsky.feed.post/xyz at://did:plc:def456/at.margin.note/rkey1" if data["at:canonical"] != want { t.Fatalf("at:canonical = %q, want %q", data["at:canonical"], want) } } func TestFetchURLMetadataOmitsAtCanonicalWhenAbsent(t *testing.T) { page := `Plain` server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Write([]byte(page)) })) defer server.Close() h := &Handler{} data := h.fetchURLMetadata(context.Background(), server.URL) if data["title"] != "Plain" { t.Fatalf("title = %q, want %q", data["title"], "Plain") } if v, ok := data["at:canonical"]; ok { t.Fatalf("at:canonical should be absent, got %q", v) } } func TestParseMotivationsPreservesOtherFilters(t *testing.T) { for _, motivation := range []string{"highlighting", "bookmarking", ""} { t.Run(motivation, func(t *testing.T) { var want []string if motivation != "" { want = []string{motivation} } if got := parseMotivations(motivation); !reflect.DeepEqual(got, want) { t.Fatalf("parseMotivations(%q) = %v, want %v", motivation, got, want) } }) } }