import { describe, expect, it } from 'vitest'; import meta from './meta.json' with { type: 'json' }; import { localMeta } from '../../api/_lib/local-meta.js'; import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; import createConnector, { certFromUrl, certUrl, parseSetLine, parseTagMarkdown } from './index.js'; const connector = createConnector(localMeta(meta)); const snapshotOf = (name: string) => (loadFixture('tag-cert', name).raw.payload as { snapshot: string }).snapshot; describe('tag-cert', () => { runFixtureSuite(connector, it, expect); it('builds and recognises TAG cert URLs', () => { expect(certUrl('v6153377')).toBe('https://my.taggrading.com/card/V6153377'); expect(certFromUrl('https://my.taggrading.com/card/V6153377')).toBe('V6153377'); expect(certFromUrl('https://tagd.co/V6153377')).toBe('V6153377'); expect(certFromUrl('https://my.taggrading.com/pop-report/Pokemon/1999/WOTC')).toBeNull(); expect(connector.urlPatterns.some((re) => re.test(certUrl('V6153377')))).toBe(true); }); it('parses the DIG report markdown: name, set line, TAG Score, grade, population, rank', () => { const page = parseTagMarkdown(snapshotOf('colmenarez-bowman-chrome')); expect(page).not.toBeNull(); expect(page!.cert).toBe('V6153377'); expect(page!.name).toBe('CARLOS COLMENAREZ'); expect(page!.setLine).toBe('2021 BOWMAN CHROME #BCP-238'); expect(page!.extraLines).toEqual(['PROSPECTS']); expect(page!.tagScore).toBe(943); expect(page!.grade).toBe('9'); expect(page!.gradeLabel).toBe('MINT'); expect(page!.atGrade).toBe(6); expect(page!.totalGraded).toBe(19); expect(page!.asOf).toBeInstanceOf(Date); expect(page!.gradedDate?.toISOString()).toBe('2022-08-09T00:00:00.000Z'); expect(page!.rankByGrade).toBe('1ST'); expect(page!.rankOverall).toBe('14TH'); expect(page!.images.length).toBe(2); expect(parseSetLine('2021 BOWMAN CHROME #BCP-238')).toEqual({ year: 2021, set: 'Bowman Chrome', number: 'BCP-238' }); expect(parseSetLine('1999 POKEMON BASE SET #4/102')).toEqual({ year: 1999, set: 'Pokemon Base Set', number: '4/102' }); }); it('normalises to a catalog_item + population_report with total graded', async () => { const out = await connector.normalize(loadFixture('tag-cert', 'colmenarez-bowman-chrome').raw); const item = out.find((r) => r.kind === 'catalog_item'); const pop = out.find((r) => r.kind === 'population_report'); if (item?.kind === 'catalog_item') { expect(item.attributes).toMatchObject({ categorySlug: 'sports_cards', name: 'Carlos Colmenarez', set: 'Bowman Chrome', number: 'BCP-238', year: 2021, variant: 'PROSPECTS' }); expect(item.attributes.identifiers).toEqual({ tag_cert: 'V6153377' }); expect(item.grade).toEqual({ grader: 'tag', grade: '9', qualifier: null, certificationNumber: 'V6153377' }); expect(item.attributes.metadata.tag_score).toBe(943); expect(item.confidence).toBeLessThan(0.9); } else throw new Error('catalog_item missing'); if (pop?.kind === 'population_report') { expect(pop.byGrade).toEqual({ '9': 6, other: 13 }); expect(pop.total).toBe(19); expect(pop.attributes.metadata.population_scope).toBe('grade_and_total'); expect(pop.reportDate.getUTCFullYear()).toBeGreaterThanOrEqual(2026); } else throw new Error('population_report missing'); }); it('parses a GEM MINT 10 copy of the same card', async () => { const out = await connector.normalize(loadFixture('tag-cert', 'card-t6113698').raw); const item = out.find((r) => r.kind === 'catalog_item'); if (item?.kind === 'catalog_item') { expect(item.grade.grade).toBe('10'); expect(item.rawTitle).toMatch(/GEM MINT/); } }); it('yields zero records for a not-found cert without throwing', async () => { const fx = loadFixture('tag-cert', 'not-found'); expect(connector.classify((fx.raw.payload as { snapshot: string }).snapshot)).toBe('not_found'); await expect(connector.normalize(fx.raw)).resolves.toEqual([]); expect(parseTagMarkdown('HomeAbout\nSubmit\nnothing here')).toBeNull(); }); });