summaryrefslogtreecommitdiff
path: root/packages/astro-rss/test/pagesGlobToRssItems.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/astro-rss/test/pagesGlobToRssItems.test.js')
-rw-r--r--packages/astro-rss/test/pagesGlobToRssItems.test.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/packages/astro-rss/test/pagesGlobToRssItems.test.js b/packages/astro-rss/test/pagesGlobToRssItems.test.js
new file mode 100644
index 000000000..36613c96c
--- /dev/null
+++ b/packages/astro-rss/test/pagesGlobToRssItems.test.js
@@ -0,0 +1,122 @@
+import assert from 'node:assert/strict';
+import { describe, it } from 'node:test';
+
+import { pagesGlobToRssItems } from '../dist/index.js';
+import { phpFeedItem, web1FeedItem } from './test-utils.js';
+
+describe('pagesGlobToRssItems', () => {
+ it('should generate on valid result', async () => {
+ const globResult = {
+ './posts/php.md': () =>
+ new Promise((resolve) =>
+ resolve({
+ url: phpFeedItem.link,
+ frontmatter: {
+ title: phpFeedItem.title,
+ pubDate: phpFeedItem.pubDate,
+ description: phpFeedItem.description,
+ },
+ }),
+ ),
+ './posts/nested/web1.md': () =>
+ new Promise((resolve) =>
+ resolve({
+ url: web1FeedItem.link,
+ frontmatter: {
+ title: web1FeedItem.title,
+ pubDate: web1FeedItem.pubDate,
+ description: web1FeedItem.description,
+ },
+ }),
+ ),
+ };
+
+ const items = await pagesGlobToRssItems(globResult);
+ const expected = [
+ {
+ title: phpFeedItem.title,
+ link: phpFeedItem.link,
+ pubDate: new Date(phpFeedItem.pubDate),
+ description: phpFeedItem.description,
+ },
+ {
+ title: web1FeedItem.title,
+ link: web1FeedItem.link,
+ pubDate: new Date(web1FeedItem.pubDate),
+ description: web1FeedItem.description,
+ },
+ ];
+
+ assert.deepEqual(
+ items.sort((a, b) => a.pubDate - b.pubDate),
+ expected,
+ );
+ });
+
+ it('should fail on missing "url"', () => {
+ const globResult = {
+ './posts/php.md': () =>
+ new Promise((resolve) =>
+ resolve({
+ url: undefined,
+ frontmatter: {
+ pubDate: phpFeedItem.pubDate,
+ description: phpFeedItem.description,
+ },
+ }),
+ ),
+ };
+ return assert.rejects(pagesGlobToRssItems(globResult));
+ });
+
+ it('should fail on missing "title" key and "description"', () => {
+ const globResult = {
+ './posts/php.md': () =>
+ new Promise((resolve) =>
+ resolve({
+ url: phpFeedItem.link,
+ frontmatter: {
+ title: undefined,
+ pubDate: phpFeedItem.pubDate,
+ description: undefined,
+ },
+ }),
+ ),
+ };
+ return assert.rejects(pagesGlobToRssItems(globResult));
+ });
+
+ it('should not fail on missing "title" key if "description" is present', () => {
+ const globResult = {
+ './posts/php.md': () =>
+ new Promise((resolve) =>
+ resolve({
+ url: phpFeedItem.link,
+ frontmatter: {
+ title: undefined,
+ pubDate: phpFeedItem.pubDate,
+ description: phpFeedItem.description,
+ },
+ }),
+ ),
+ };
+ return assert.doesNotReject(pagesGlobToRssItems(globResult));
+ });
+
+ it('should not fail on missing "description" key if "title" is present', () => {
+ const globResult = {
+ './posts/php.md': () =>
+ new Promise((resolve) =>
+ resolve({
+ url: phpFeedItem.link,
+ frontmatter: {
+ title: phpFeedItem.title,
+ pubDate: phpFeedItem.pubDate,
+ description: undefined,
+ },
+ }),
+ ),
+ };
+ return assert.doesNotReject(pagesGlobToRssItems(globResult));
+ });
+});