TypeScript 61.9%
HTML 37.2%
SQL 0.7%
1import { describe, expect, it } from 'vitest';2import meta from './meta.json' with { type: 'json' };3import { localMeta } from '../../api/_lib/local-meta.js';4import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';5import createConnector, { parseBrowseMarkdown, parseComcTitle, parseSetLine } from './index.js';67const connector = createConnector(localMeta(meta));89const SAMPLE = `Listings **1** \\- **100** of **1,292**1011[![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)12131986-87 Fleer - \\[Base\\] #55141516### [Steve Johnson \\[CSG 10 Gem Mint\\]](https://www.comc.com/Cards/Basketball/1986-87/Fleer_-_Base/55/Steve_Johnson/1395657/Graded/CSG/10_Gem)1718$1,791.7619`;2021describe('comc', () => {22 runFixtureSuite(connector, it, expect);2324 it('parses browse rows, titles and set lines', () => {25 const rows = parseBrowseMarkdown(SAMPLE);26 expect(rows).toHaveLength(1);27 expect(rows[0]).toMatchObject({ price: 1791.76, setLine: '1986-87 Fleer - [Base] #55' });28 expect(parseComcTitle('Steve Johnson [CSG 10 Gem Mint]')).toMatchObject({ name: 'Steve Johnson', grader: 'csg', grade: '10' });29 expect(parseComcTitle('Michael Jordan [PSA 9 MINT]')).toMatchObject({ grader: 'psa', grade: '9' });30 expect(parseComcTitle('Larry Bird')).toMatchObject({ grader: null, grade: null });31 expect(parseSetLine('1986-87 Fleer - [Base] #57')).toEqual({ year: 1986, set: '1986 Fleer', variant: null, number: '57' });32 expect(parseSetLine('2018-19 Panini Prizm - [Base] - Silver Prizm #280')).toMatchObject({ year: 2018, number: '280' });33 });3435 it('emits USD listings with card attributes', async () => {36 for (const name of listFixtures('comc')) {37 const out = await connector.normalize(loadFixture('comc', name).raw);38 expect(out.length).toBeGreaterThan(0);39 for (const r of out) {40 expect(r.kind).toBe('listing');41 if (r.kind === 'listing') {42 expect(r.currency).toBe('USD');43 expect(r.price).toBeGreaterThan(0);44 expect(r.sourceUrl).toMatch(/comc\.com\/Cards\//);45 }46 }47 }48 });49});50