import { describe, expect, it } from 'vitest'; import { classifyRef } from '../src/lib/resolve.js'; describe('classifyRef', () => { it('recognises CancerIndex public ids per namespace', () => { expect(classifyRef('CI-CAN-00000042', 'CAN')).toBe('id'); expect(classifyRef('CI-GENE-00000001', 'GENE')).toBe('id'); // an id from another namespace is not accepted as this entity's id expect(classifyRef('CI-GENE-00000001', 'CAN')).toBe('slug'); }); it('never treats bare integers as entity ids', () => { expect(classifyRef('42', 'CAN')).toBe('slug'); expect(classifyRef('42', 'PUB')).toBe('pmid'); // PMIDs are the only numeric public references }); it('classifies slugs, symbols and registry ids', () => { expect(classifyRef('lung-adenocarcinoma', 'CAN')).toBe('slug'); expect(classifyRef('BRAF', 'GENE')).toBe('symbol'); expect(classifyRef('NCT01234567', 'TRIAL')).toBe('nct'); expect(classifyRef('nct01234567', 'TRIAL')).toBe('nct'); expect(classifyRef('NCT123', 'TRIAL')).toBe('slug'); }); });