Files
2026-05-16 14:02:49 -05:00

39 lines
1.3 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { cleanupUrl, mergeReadMoreLinks } from '../src/links/url.js';
import { ExtractedLink } from '../src/parsing/types.js';
describe('URL cleanup', () => {
it('strips tracking parameters and unwraps supported redirect URLs', () => {
const result = cleanupUrl(
'https://newsletter.example/redirect?url=https%3A%2F%2Fexample.com%2Fpost%3Futm_source%3Dx%26id%3D1&mc_cid=abc',
{ trackingParams: ['utm_*', 'mc_cid'], unwrapRedirects: true }
);
expect(result).toBe('https://example.com/post?id=1');
});
});
describe('read-more merging', () => {
it('merges a read-more link into the preceding link with the same normalized URL', () => {
const links: ExtractedLink[] = [
{
url: 'https://example.com/a',
normalizedUrl: 'https://example.com/a',
title: 'Great article',
description: 'A useful summary',
sourceText: 'Great article',
section: 'Python'
},
{
url: 'https://example.com/a?utm_source=x',
normalizedUrl: 'https://example.com/a',
title: 'Read more',
description: '',
sourceText: 'Read more'
}
];
expect(mergeReadMoreLinks(links, /^(read more)$/i)).toHaveLength(1);
});
});