package logic
import (
"context"
"net/http"
"net/http/httptest"
"strings"
"testing"
)
func TestParseAtomFeedAndHelpers(t *testing.T) {
atom := []byte(`
Atom News
Entry One
https://example.com/e/1
<p>Body <img src="https://example.com/fallback.png"/></p>
`)
items, err := parseFeed(atom, "https://example.com/atom")
if err != nil || len(items) != 1 {
t.Fatalf("%+v %v", items, err)
}
if items[0].ImageURL != "https://example.com/atom.jpg" {
t.Fatalf("image=%q", items[0].ImageURL)
}
long := strings.Repeat("字", 300)
if got := truncateRunes(long, 10); len([]rune(got)) != 10 {
t.Fatalf("truncate %q", got)
}
}
func TestRSSMediaContentAndFetchFeed(t *testing.T) {
rss := []byte(`
MRSS
-
Media item
https://example.com/m
no img tag
`)
items, err := parseFeed(rss, "https://example.com/mrss")
if err != nil || len(items) != 1 || items[0].ImageURL != "https://example.com/m.jpg" {
t.Fatalf("%+v %v", items, err)
}
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
_, _ = w.Write(rss)
}))
defer srv.Close()
got, err := FetchFeed(context.Background(), srv.Client(), srv.URL)
if err != nil || len(got) != 1 {
t.Fatalf("%+v %v", got, err)
}
}