Add per-repo cover image support for RSS feed items
Add image_url column to repos table with migration, CLI image add/remove commands, and Media RSS <media:content> elements in generated feed output. New CLI commands: ghrel image add <repo> <url>, ghrel image remove <repo>
This commit is contained in:
@@ -132,3 +132,53 @@ class TestGenerateFeed:
|
||||
xml_str = generate_feed(entries, base_url="http://example.com:9000")
|
||||
root = ET.fromstring(xml_str)
|
||||
assert root[0].find("link").text == "http://example.com:9000/"
|
||||
|
||||
def test_media_content_with_image(self):
|
||||
entries = self._entries(1)
|
||||
entries[0]["image_url"] = "https://example.com/logo.png"
|
||||
xml_str = generate_feed(entries)
|
||||
root = ET.fromstring(xml_str)
|
||||
assert root is not None
|
||||
media_el = root[0].find("item").find("{http://search.yahoo.com/mrss/}content")
|
||||
assert media_el is not None
|
||||
assert media_el.get("url") == "https://example.com/logo.png"
|
||||
assert media_el.get("medium") == "image"
|
||||
assert "media" in xml_str or "search.yahoo.com/mrss" in xml_str
|
||||
|
||||
def test_no_media_content_without_image(self):
|
||||
entries = self._entries(1)
|
||||
entries[0]["image_url"] = None
|
||||
xml_str = generate_feed(entries)
|
||||
root = ET.fromstring(xml_str)
|
||||
media_el = root[0].find("item").find("{http://search.yahoo.com/mrss/}content")
|
||||
assert media_el is None
|
||||
|
||||
def test_no_media_content_when_key_missing(self):
|
||||
entries = self._entries(1)
|
||||
entries[0]["image_url"] = None
|
||||
xml_str = generate_feed(entries)
|
||||
root = ET.fromstring(xml_str)
|
||||
media_el = root[0].find("item").find("{http://search.yahoo.com/mrss/}content")
|
||||
assert media_el is None
|
||||
|
||||
def test_media_content_multiple_items_selective(self):
|
||||
entries = self._entries(2)
|
||||
entries[0]["image_url"] = "https://example.com/logo1.png"
|
||||
entries[1]["image_url"] = None
|
||||
xml_str = generate_feed(entries)
|
||||
root = ET.fromstring(xml_str)
|
||||
items = root[0].findall("item")
|
||||
media_1 = items[0].find("{http://search.yahoo.com/mrss/}content")
|
||||
media_2 = items[1].find("{http://search.yahoo.com/mrss/}content")
|
||||
assert media_1 is not None
|
||||
assert media_1.get("url") == "https://example.com/logo1.png"
|
||||
assert media_2 is None
|
||||
|
||||
def test_image_with_special_chars_in_url(self):
|
||||
entries = self._entries(1)
|
||||
entries[0]["image_url"] = "https://example.com/logo.png?w=200&h=200"
|
||||
xml_str = generate_feed(entries)
|
||||
root = ET.fromstring(xml_str)
|
||||
assert root is not None
|
||||
media_el = root[0].find("item").find("{http://search.yahoo.com/mrss/}content")
|
||||
assert "w=200" in media_el.get("url")
|
||||
|
||||
Reference in New Issue
Block a user