File size: 4,386 Bytes
bf48b89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import { describe, expect, it } from 'vitest';

import rss3 from './rss3';

const NETWORK = 'rsshub';
const TAG = 'RSS';
const TYPE = 'feed';
const PLATFORM = 'RSSHub';

describe('rss3', () => {
    it('should return UMS Result', () => {
        const data = {
            item: [
                {
                    link: 'https://example.com/post1',
                    author: 'Author Name',
                    description: 'Description of the post',
                    pubDate: '2024-01-01T00:00:00Z',
                    category: 'Category Name',
                    title: 'Post Title',
                    updated: '2024-01-02T00:00:00Z',
                },
                {
                    link: 'https://example.com/post2',
                    author: 'Anaother Author',
                    description: 'Another description',
                    pubDate: '2024-01-03T00:00:00Z',
                    category: 'Another Category',
                    title: 'Another Post',
                    updated: '2024-01-02T00:00:00Z',
                },
            ],
        };

        const result = rss3(data);

        const expected = {
            data: [
                {
                    owner: 'example.com',
                    id: 'https://example.com/post1',
                    network: NETWORK,
                    from: 'example.com',
                    to: 'example.com',
                    tag: TAG,
                    type: TYPE,
                    direction: 'out',
                    feeValue: '0',
                    actions: [
                        {
                            tag: TAG,
                            type: TYPE,
                            platform: PLATFORM,
                            from: 'example.com',
                            to: 'example.com',
                            metadata: {
                                authors: [{ name: 'Author Name' }],
                                description: 'Description of the post',
                                pub_date: '2024-01-01T00:00:00Z',
                                tags: ['Category Name'],
                                title: 'Post Title',
                            },
                            related_urls: ['https://example.com/post1'],
                        },
                    ],
                    timestamp: 1_704_153_600,
                },
                {
                    owner: 'example.com',
                    id: 'https://example.com/post2',
                    network: NETWORK,
                    from: 'example.com',
                    to: 'example.com',
                    tag: TAG,
                    type: TYPE,
                    direction: 'out',
                    feeValue: '0',
                    actions: [
                        {
                            tag: TAG,
                            type: TYPE,
                            platform: PLATFORM,
                            from: 'example.com',
                            to: 'example.com',
                            metadata: {
                                authors: [{ name: 'Anaother Author' }],
                                description: 'Another description',
                                pub_date: '2024-01-03T00:00:00Z',
                                tags: ['Another Category'],
                                title: 'Another Post',
                            },
                            related_urls: ['https://example.com/post2'],
                        },
                    ],
                    timestamp: 1_704_153_600,
                },
            ],
        };
        expect(result).toStrictEqual(expected);
    });

    it('falls back to raw link when URL parsing fails', () => {
        const data = {
            item: [
                {
                    link: 'not-a-url',
                    author: 'Author',
                    description: 'Desc',
                    pubDate: '2024-01-01T00:00:00Z',
                    category: 'Category',
                    title: 'Title',
                    updated: '2024-01-02T00:00:00Z',
                },
            ],
        };

        const result = rss3(data);
        expect(result.data[0].owner).toBe('not-a-url');
        expect(result.data[0].from).toBe('not-a-url');
        expect(result.data[0].to).toBe('not-a-url');
    });
});