import { describe, expect, it } from 'vitest'; import meta from './meta.json' with { type: 'json' }; import { localMeta } from '../../api/_lib/local-meta.js'; import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; import createConnector, { parseBrowseMarkdown, parseComcTitle, parseSetLine } from './index.js'; const connector = createConnector(localMeta(meta)); const SAMPLE = `Listings **1** \\- **100** of **1,292** [![Steve Johnson [CSG 10 Gem Mint]](https://img.comc.com/i/Basketball/1986-87/Fleer---Base/55/Steve-Johnson.jpg?id=fc68&size=biggerthumb)](https://www.comc.com/Cards/Basketball/1986-87/Fleer_-_Base/55/Steve_Johnson/1395657/Graded/CSG/10_Gem) 1986-87 Fleer - \\[Base\\] #55 ### [Steve Johnson \\[CSG 10 Gem Mint\\]](https://www.comc.com/Cards/Basketball/1986-87/Fleer_-_Base/55/Steve_Johnson/1395657/Graded/CSG/10_Gem) $1,791.76 `; describe('comc', () => { runFixtureSuite(connector, it, expect); it('parses browse rows, titles and set lines', () => { const rows = parseBrowseMarkdown(SAMPLE); expect(rows).toHaveLength(1); expect(rows[0]).toMatchObject({ price: 1791.76, setLine: '1986-87 Fleer - [Base] #55' }); expect(parseComcTitle('Steve Johnson [CSG 10 Gem Mint]')).toMatchObject({ name: 'Steve Johnson', grader: 'csg', grade: '10' }); expect(parseComcTitle('Michael Jordan [PSA 9 MINT]')).toMatchObject({ grader: 'psa', grade: '9' }); expect(parseComcTitle('Larry Bird')).toMatchObject({ grader: null, grade: null }); expect(parseSetLine('1986-87 Fleer - [Base] #57')).toEqual({ year: 1986, set: '1986 Fleer', variant: null, number: '57' }); expect(parseSetLine('2018-19 Panini Prizm - [Base] - Silver Prizm #280')).toMatchObject({ year: 2018, number: '280' }); }); it('emits USD listings with card attributes', async () => { for (const name of listFixtures('comc')) { const out = await connector.normalize(loadFixture('comc', name).raw); expect(out.length).toBeGreaterThan(0); for (const r of out) { expect(r.kind).toBe('listing'); if (r.kind === 'listing') { expect(r.currency).toBe('USD'); expect(r.price).toBeGreaterThan(0); expect(r.sourceUrl).toMatch(/comc\.com\/Cards\//); } } } }); });