Files
Newsletter-Link-Catalog/tests/config.test.ts
T
2026-05-16 15:23:40 -05:00

50 lines
1.2 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { validateDateFilters } from '../src/cli/flags.js';
import { loadConfigFromString } from '../src/config/config.js';
describe('config validation', () => {
it('loads a valid YAML config with defaults', () => {
const config = loadConfigFromString(`
gmail:
folder: Newsletters
output:
name: Newsletter Link Catalog
excel:
enabled: true
path: ./output/catalog.xlsx
`);
expect(config.gmail.folder).toBe('Newsletters');
expect(config.links.trackingParams).toContain('utm_*');
expect(config.enrichment.concurrency).toBe(3);
});
it('treats comment-only YAML maps as empty objects', () => {
const config = loadConfigFromString(`
gmail:
folder: Newsletters
output:
name: Newsletter Link Catalog
excel:
enabled: true
path: ./output/catalog.xlsx
newsletters:
# sender@example.com:
categories:
custom:
- Rust
llm:
# provider: anthropic
`);
expect(config.newsletters).toEqual({});
expect(config.categories.llm.provider).toBe('anthropic');
});
it('rejects conflicting relative and absolute date filters', () => {
expect(() => validateDateFilters({ last: '30d', from: '2026-01-01' })).toThrow(
/cannot be combined/i
);
});
});