import { describe, it, expect } from 'vitest'; import { openInMemoryForTest } from '../../src/lib/server/db'; import { addDomain, listDomains, removeDomain, setDomainFavicon, updateDomain, getDomainById } from '../../src/lib/server/domains/repository'; describe('allowed domains', () => { it('round-trips domains', () => { const db = openInMemoryForTest(); addDomain(db, 'chefkoch.de', 'Chefkoch'); addDomain(db, 'emmikochteinfach.de', 'Emmi kocht einfach'); const all = listDomains(db); expect(all.map((d) => d.domain).sort()).toEqual(['chefkoch.de', 'emmikochteinfach.de']); }); it('normalizes www. and case via addDomain', () => { const db = openInMemoryForTest(); addDomain(db, 'WWW.Chefkoch.DE'); expect(listDomains(db)[0].domain).toBe('chefkoch.de'); }); it('removes domains', () => { const db = openInMemoryForTest(); const d = addDomain(db, 'chefkoch.de'); removeDomain(db, d.id); expect(listDomains(db)).toEqual([]); }); it('updateDomain changes label without touching favicon', () => { const db = openInMemoryForTest(); const d = addDomain(db, 'chefkoch.de', 'Chefkoch'); setDomainFavicon(db, d.id, 'favicon-abc.png'); const updated = updateDomain(db, d.id, { display_name: 'Chefkoch.de' }); expect(updated?.domain).toBe('chefkoch.de'); expect(updated?.display_name).toBe('Chefkoch.de'); expect(updated?.favicon_path).toBe('favicon-abc.png'); }); it('updateDomain resets favicon when the domain itself changes', () => { const db = openInMemoryForTest(); const d = addDomain(db, 'chefkoch.de'); setDomainFavicon(db, d.id, 'favicon-abc.png'); const updated = updateDomain(db, d.id, { domain: 'rezeptwelt.de' }); expect(updated?.domain).toBe('rezeptwelt.de'); expect(updated?.favicon_path).toBe(null); }); it('updateDomain returns null for missing id', () => { const db = openInMemoryForTest(); expect(updateDomain(db, 999, { domain: 'x.com' })).toBe(null); }); it('getDomainById fetches single row', () => { const db = openInMemoryForTest(); const d = addDomain(db, 'chefkoch.de'); expect(getDomainById(db, d.id)?.domain).toBe('chefkoch.de'); expect(getDomainById(db, 999)).toBe(null); }); });