Files

3.9 KiB
Raw Permalink Blame History

RSS Feed Capability

ADDED Requirements

Requirement: R1 — Лимит постов в RSS-ленте

Главная RSS-лента (/index.xml) MUST содержать не более 5 последних постов (по publishDate), отсортированных по дате публикации по убыванию.

Scenario: Сборка сайта даёт ровно 5 элементов item

GIVEN сайт собран командой hugo --minify WHEN запрашивается https://dedinit.ru/index.xml (файл public/index.xml) THEN число элементов <item> в <channel> равно 5 (или меньше, если постов < 5), и это 5 самых свежих постов по дате.

Requirement: R2 — Полный текст поста в RSS

Каждый <item> главной RSS-ленты MUST содержать <content:encoded> с полным HTML-контентом поста (поле .Content темы Hugo), обёрнутым в CDATA, включая разметку, блоки кода и абсолютные ссылки на медиафайлы поста.

Scenario: content:encoded присутствует и содержит медиа-URL

GIVEN сайт собран командой hugo --minify WHEN в public/index.xml смотреть элемент <item> любого из 5 последних постов THEN присутствует непустой <content:encoded>, содержащий HTML поста и ссылки вида https://dedinit.ru/<год>/<slug>/hero.svg (или аналогичные абсолютные URL медиа).

Requirement: R3 — Описание поста в RSS

<description> каждого <item> MUST быть непустым: используется frontmatter description если задан, иначе авто-summary .Summary.

Scenario: description непустое

GIVEN сайт собран командой hugo --minify WHEN в public/index.xml смотреть <description> каждого <item> THEN оно непустое и не содержит обрезанных HTML-тегов.

Requirement: R4 — Метаданные элемента RSS

Каждый <item> MUST содержать корректные <title>, <link>, <pubDate>, <guid> (permalink), согласно текущему шаблону темы themes/rDedInit/layouts/_default/rss.xml.

Scenario: Обязательные поля элемента

GIVEN сайт собран командой hugo --minify WHEN парсить public/index.xml как XML THEN каждый <item> содержит все 4 обязательных поля, <link> и <guid> равны полному URL поста (https://dedinit.ru/<год>/<slug>/).

Requirement: R5 — Медиа-обложка в RSS

Каждый <item> MUST включать в <content:encoded> обложку поста (cover.image, hero.svg) как <figure class="entry-cover"><img ...></figure> перед полным текстом, со ссылкой на абсолютный URL медиафайла (https://dedinit.ru/<год>/<slug>/hero.svg), если cover.image задан.

Scenario: Обложка в content:encoded

GIVEN сайт собран командой hugo --minify WHEN в public/index.xml смотреть <content:encoded> поста с cover.image THEN он начинается с <figure class="entry-cover"> и содержит <img src="https://dedinit.ru/<год>/<slug>/hero.svg".

Scenario: Нет cover — нет figure

GIVEN сайт собран командой hugo --minify WHEN в <content:encoded> поста без cover.image THEN отсутствует <figure class="entry-cover">, контент начинается с текста поста.