import { describe, expect, it } from 'vitest'; import meta from './meta.json' with { type: 'json' }; import { localMeta } from '../_lib/local-meta.js'; import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; import createConnector, { isFoil } from './index.js'; const connector = createConnector(localMeta(meta)); describe('cardkingdom', () => { runFixtureSuite(connector, it, expect); it('parses foil flags', () => { expect(isFoil('true')).toBe(true); expect(isFoil('false')).toBe(false); expect(isFoil(undefined)).toBe(false); }); it('keys singles by scryfall_id and dates observations by the price list stamp', async () => { const single = listFixtures('cardkingdom').find((n) => n.startsWith('single'))!; const out = await connector.normalize(loadFixture('cardkingdom', single).raw); const cat = out.find((r) => r.kind === 'catalog_item'); const obs = out.find((r) => r.kind === 'price_observation'); expect(cat && cat.kind === 'catalog_item' ? cat.attributes.identifiers.scryfall_id : null).toMatch(/^[0-9a-f-]{36}$/); expect(obs && obs.kind === 'price_observation' ? obs.currency : null).toBe('USD'); expect(obs && obs.kind === 'price_observation' ? (obs.attributes.metadata as { provider: string }).provider : null).toBe('cardkingdom'); }); });