aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils/helpers/rss.test.ts
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-11-30 13:12:45 +0100
committerArmand Philippot <git@armandphilippot.com>2023-11-30 14:54:06 +0100
commitf7e6f42216c3cbeab9add475a61bb407c6be3519 (patch)
tree6c02d5aaaf794af1e1aadd2e3b46aac5b2c57b93 /src/utils/helpers/rss.test.ts
parent9c6265b33a7bb31936e3c9d6dcf415e11a6db752 (diff)
refactor(pages): refine RSS feed
* add favicon * add item categories * add item image * add item author * add item update date (it seems `date` is used as update date by Feed) * change copyright format * fix ESlint errors * fix atom and json links
Diffstat (limited to 'src/utils/helpers/rss.test.ts')
-rw-r--r--src/utils/helpers/rss.test.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/utils/helpers/rss.test.ts b/src/utils/helpers/rss.test.ts
new file mode 100644
index 0000000..b04f6d3
--- /dev/null
+++ b/src/utils/helpers/rss.test.ts
@@ -0,0 +1,35 @@
+import { describe, expect, it } from '@jest/globals';
+import { CONFIG } from '../config';
+import { ROUTES } from '../constants';
+import { generateFeed } from './rss';
+
+describe('generate-feed', () => {
+ /* eslint-disable max-statements */
+ it('generates a rss feed', async () => {
+ const feed = await generateFeed();
+
+ // eslint-disable-next-line @typescript-eslint/no-magic-numbers
+ expect.assertions(10);
+
+ expect(feed.options.author).toStrictEqual({
+ name: CONFIG.name,
+ email: process.env.APP_AUTHOR_EMAIL,
+ link: CONFIG.url,
+ });
+ expect(feed.options.copyright).toBe(
+ `\u00A9 ${CONFIG.copyright.startYear} - ${CONFIG.copyright.endYear} ${CONFIG.name} - CC BY SA`
+ );
+ expect(feed.options.description).toBe(process.env.APP_FEED_DESCRIPTION);
+ expect(feed.options.favicon).toBe(`${CONFIG.url}/favicon.ico`);
+ expect(feed.options.feedLinks).toStrictEqual({
+ json: `${CONFIG.url}${ROUTES.RSS}.json`,
+ atom: `${CONFIG.url}${ROUTES.RSS}/atom`,
+ });
+ expect(feed.options.generator).toBe('Feed & NextJS');
+ expect(feed.options.language).toBe(CONFIG.locales.defaultLocale);
+ expect(feed.options.link).toBe(CONFIG.url);
+ expect(feed.options.title).toBe(`${CONFIG.name} | ${CONFIG.baseline}`);
+ expect(feed.items.length).toBeGreaterThan(0);
+ });
+ /* eslint-enable max-statements */
+});