feat: LetterFeed icon for feed

This commit is contained in:
Leon
2025-07-19 19:21:20 +02:00
parent 5abb379af0
commit 120718987e
3 changed files with 6 additions and 0 deletions

View File

@@ -17,11 +17,13 @@ def generate_feed(db: Session, newsletter_id: str):
feed_url = f"{settings.app_base_url}/feeds/{newsletter_id}"
logo_url = f"{settings.app_base_url}/logo.png"
icon_url = f"{settings.app_base_url}/favicon.ico"
fg = FeedGenerator()
fg.id(f"urn:letterfeed:newsletter:{newsletter.id}")
fg.title(newsletter.name)
fg.logo(logo_url)
fg.icon(icon_url)
fg.link(href=feed_url, rel="self")
sender_emails = ", ".join([s.email for s in newsletter.senders])
fg.description(f"A feed of newsletters from {sender_emails}")

View File

@@ -185,6 +185,9 @@ def test_get_newsletter_feed(client: TestClient):
logo = root.find("atom:logo", ns)
assert logo is not None
assert logo.text == "http://localhost:8000/logo.png"
icon = root.find("atom:icon", ns)
assert icon is not None
assert icon.text == "http://localhost:8000/favicon.ico"
entry_titles = [
entry.find("atom:title", ns).text for entry in root.findall("atom:entry", ns)
]

View File

@@ -41,6 +41,7 @@ def test_generate_feed(db_session: Session):
assert f"<title>{newsletter.name}</title>" in feed_xml.decode()
assert f"<id>urn:letterfeed:newsletter:{newsletter.id}</id>" in feed_xml.decode()
assert "<logo>http://localhost:8000/logo.png</logo>" in feed_xml.decode()
assert "<icon>http://localhost:8000/favicon.ico</icon>" in feed_xml.decode()
assert "<title>First Entry</title>" in feed_xml.decode()
assert "<title>Second Entry</title>" in feed_xml.decode()
assert (