@restnfeel/agentc-starter-kit
Version:
한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템
40 lines (35 loc) • 1.22 kB
text/typescript
import { RSSFetcher, RSSFeedConfig, RSSDocument } from '../rssFetcher';
import Parser from 'rss-parser';
jest.mock('rss-parser');
const mockFeed = {
items: [
{
title: 'Test Title',
link: 'https://example.com/post',
content: 'Test content',
pubDate: '2024-06-12',
creator: 'Author',
categories: ['cat1', 'cat2'],
},
],
};
(Parser as jest.Mock).mockImplementation(() => ({
parseURL: jest.fn().mockResolvedValue(mockFeed),
}));
describe('RSSFetcher', () => {
it('should fetch and convert RSS feed items', async () => {
const config: RSSFeedConfig[] = [
{ url: 'https://example.com/rss', interval: '* * * * *' },
];
const fetcher = new RSSFetcher(config);
// @ts-ignore
const docs: RSSDocument[] = mockFeed.items.map(item => fetcher['toDocument'](item, config[0].url));
expect(docs[0].title).toBe('Test Title');
expect(docs[0].link).toBe('https://example.com/post');
expect(docs[0].content).toBe('Test content');
expect(docs[0].pubDate).toBe('2024-06-12');
expect(docs[0].author).toBe('Author');
expect(docs[0].categories).toEqual(['cat1', 'cat2']);
expect(docs[0].source).toBe('https://example.com/rss');
});
});