import { describe, expect, it } from 'vitest'; import { LocalAssessorRepository } from '../../src/persistence/local-assessor-repository'; describe('import fingerprint repository', () => { it('records hashes atomically and increments repeat counters', async () => { const repository = new LocalAssessorRepository(); const entry = { sha256: 'b'.repeat(64), fileName: 'report.xlsx', sizeBytes: 42, lastModified: 7 }; await repository.recordImportFingerprints([entry], '2026-07-17T08:00:00.000Z'); const repeated = await repository.recordImportFingerprints([entry], '2026-07-17T09:00:00.000Z'); expect(repeated[0]).toMatchObject({ ...entry, importCount: 2, firstImportedAt: '2026-07-17T08:00:00.000Z', lastImportedAt: '2026-07-17T09:00:00.000Z' }); await expect(repository.findImportFingerprints(['c'.repeat(64)])).resolves.toEqual([]); expect(repository.revision).toBe(2); }); it('rejects malformed fingerprints without changing repository state', async () => { const repository = new LocalAssessorRepository(); await expect(repository.recordImportFingerprints([{ sha256: 'invalid', fileName: 'x.csv', sizeBytes: 1, lastModified: 0 }])).rejects.toThrow('SHA-256'); expect(repository.revision).toBe(0); }); });