import { describe, expect, it } from 'vitest'; import { thumbnailUrl } from './thumbnails'; describe('thumbnailUrl', () => { it('returns null when thumbnailKey is undefined', () => { expect(thumbnailUrl({ id: 'abc' })).toBeNull(); }); it('returns url without version param when thumbnailKey present but generatedAt missing', () => { expect(thumbnailUrl({ id: 'abc', thumbnailKey: 'thumbnails/abc.jpg' })).toBe( '/api/documents/abc/thumbnail' ); }); it('appends encoded cache-bust param when generatedAt present', () => { const url = thumbnailUrl({ id: 'abc', thumbnailKey: 'thumbnails/abc.jpg', thumbnailGeneratedAt: '2026-04-22T20:41:15.123456' }); expect(url).toBe('/api/documents/abc/thumbnail?v=2026-04-22T20%3A41%3A15.123456'); }); it('different generatedAt produces different URL — enables cache-bust on file replace', () => { const a = thumbnailUrl({ id: 'x', thumbnailKey: 'thumbnails/x.jpg', thumbnailGeneratedAt: '2026-01-01T10:00:00' }); const b = thumbnailUrl({ id: 'x', thumbnailKey: 'thumbnails/x.jpg', thumbnailGeneratedAt: '2026-01-01T11:00:00' }); expect(a).not.toBe(b); }); });