-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Expand file tree
/
Copy pathwebsiteFeeds.test.mjs
More file actions
55 lines (49 loc) · 1.58 KB
/
websiteFeeds.test.mjs
File metadata and controls
55 lines (49 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import generateWebsiteFeeds from '@/next-data/generators/websiteFeeds';
describe('generateWebsiteFeeds', () => {
jest.mock('feed');
jest.mock('../../../next.constants.mjs', () => ({
BASE_URL: 'https://example.com',
BASE_PATH: '/example',
}));
jest.mock('../../../next.json.mjs', () => ({
siteConfig: {
rssFeeds: [
{
category: 'all',
title: 'Node.js Blog',
description: 'Node.js Blog Feed',
file: 'blog.xml',
},
],
},
}));
it('generates website feeds with correct data', () => {
const blogData = {
posts: [
{
slug: '/post-1',
title: 'Post 1',
author: 'Author 1',
date: '2025-04-18',
categories: ['all'],
},
],
};
const result = generateWebsiteFeeds(blogData);
expect(result.size).toBe(3);
const blogFeed = result.get('blog.xml');
const expectedDate = new Date('2025-04-18');
expect(blogFeed.options.id).toBe('blog.xml');
expect(blogFeed.options.title).toBe('Node.js Blog');
expect(blogFeed.options.language).toBe('en');
expect(blogFeed.options.link).toBe('https://nodejs.org/en/feed/blog.xml');
expect(blogFeed.items.length).toBe(1);
const feedItem = blogFeed.items[0];
expect(feedItem.id).toBe('/post-1');
expect(feedItem.guid).toBe(`/post-1?${expectedDate.getTime()}`);
expect(feedItem.title).toBe('Post 1');
expect(feedItem.author).toBe('Author 1');
expect(feedItem.date).toEqual(expectedDate);
expect(feedItem.link).toBe('https://nodejs.org/en/post-1');
});
});