webstreamr-github/src/utils/manifest.test.ts
2025-05-29 19:17:21 +00:00

47 lines
1.9 KiB
TypeScript

import winston from 'winston';
import { buildManifest } from './manifest';
import { KinoKiste, MeineCloud, VerHdLink } from '../handler';
import { Fetcher } from './Fetcher';
import { ExtractorRegistry } from '../extractor';
jest.mock('../utils/Fetcher');
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
// @ts-expect-error No constructor args needed
const fetcher = new Fetcher();
describe('buildManifest', () => {
test('has unchecked handler without a config', () => {
const extractorRegistry = new ExtractorRegistry(logger, fetcher);
const handlers = [
new VerHdLink(fetcher, extractorRegistry),
new KinoKiste(fetcher, extractorRegistry),
new MeineCloud(fetcher, extractorRegistry),
];
const manifest = buildManifest(handlers, {});
expect(manifest.config).toStrictEqual([
{ key: 'de', type: 'checkbox', title: '🇩🇪 (KinoKiste, MeineCloud)' },
{ key: 'es', type: 'checkbox', title: '🇪🇸 (VerHdLink)' },
{ key: 'mx', type: 'checkbox', title: '🇲🇽 (VerHdLink)' },
{ key: 'excludeExternalUrls', type: 'checkbox', title: 'Exclude external URLs from results' },
]);
});
test('has checked handler with appropriate config', () => {
const extractorRegistry = new ExtractorRegistry(logger, fetcher);
const handlers = [
new VerHdLink(fetcher, extractorRegistry),
new KinoKiste(fetcher, extractorRegistry),
new MeineCloud(fetcher, extractorRegistry),
];
const manifest = buildManifest(handlers, { de: 'on' });
expect(manifest.config).toStrictEqual([
{ key: 'de', type: 'checkbox', title: '🇩🇪 (KinoKiste, MeineCloud)', default: 'checked' },
{ key: 'es', type: 'checkbox', title: '🇪🇸 (VerHdLink)' },
{ key: 'mx', type: 'checkbox', title: '🇲🇽 (VerHdLink)' },
{ key: 'excludeExternalUrls', type: 'checkbox', title: 'Exclude external URLs from results' },
]);
});
});