import { describe, expect, it } from 'vitest'; import { ConnectorMetaSchema } from '@rareindex/connectors'; import metaJson from './meta.json' with { type: 'json' }; import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; import createConnector, { parseCoinTitle } from './index.js'; const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); describe('apmex', () => { runFixtureSuite(connector, it, expect); it('emits coin catalog items + USD dealer asks with parsed grades', async () => { const fx = loadFixture('apmex', 'liberty-eagle-category-p1'); const out = await connector.normalize(fx.raw); const cats = out.filter((r) => r.kind === 'catalog_item'); const lst = out.filter((r) => r.kind === 'listing'); expect(cats.length).toBeGreaterThan(0); expect(lst.length).toBeGreaterThan(0); for (const c of cats) { if (c.kind !== 'catalog_item') continue; expect(c.attributes.categorySlug).toBe('coins'); expect(c.attributes.series).toBe('$10 Liberty Gold Eagle'); expect(c.attributes.identifiers.apmex_sku).toMatch(/^\d+$/); } for (const l of lst) { if (l.kind !== 'listing') continue; expect(l.currency).toBe('USD'); expect(l.price).toBeGreaterThan(100); expect(l.seller).toBe('APMEX'); } }); it('parses coin titles', () => { expect(parseCoinTitle('1887-S $10 Liberty Gold Eagle MS-63 NGC')).toMatchObject({ year: 1887, mintMark: 'S', grader: 'ngc', grade: 'MS63' }); expect(parseCoinTitle('1900 $10 Liberty Gold Eagle MS-64+ PCGS CAC')).toMatchObject({ year: 1900, mintMark: null, grader: 'pcgs', grade: 'MS64+', designation: 'CAC' }); expect(parseCoinTitle('$10 Liberty Gold Eagle XF (Random Year)')).toMatchObject({ year: null, grader: null, random: true }); expect(parseCoinTitle('$10 Liberty Gold Eagle (Cleaned)').cleaned).toBe(true); }); });