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 '../_lib/local-meta.js';4import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';5import createConnector, { isFoil } from './index.js';67const connector = createConnector(localMeta(meta));89describe('cardkingdom', () => {10 runFixtureSuite(connector, it, expect);1112 it('parses foil flags', () => {13 expect(isFoil('true')).toBe(true);14 expect(isFoil('false')).toBe(false);15 expect(isFoil(undefined)).toBe(false);16 });1718 it('keys singles by scryfall_id and dates observations by the price list stamp', async () => {19 const single = listFixtures('cardkingdom').find((n) => n.startsWith('single'))!;20 const out = await connector.normalize(loadFixture('cardkingdom', single).raw);21 const cat = out.find((r) => r.kind === 'catalog_item');22 const obs = out.find((r) => r.kind === 'price_observation');23 expect(cat && cat.kind === 'catalog_item' ? cat.attributes.identifiers.scryfall_id : null).toMatch(/^[0-9a-f-]{36}$/);24 expect(obs && obs.kind === 'price_observation' ? obs.currency : null).toBe('USD');25 expect(obs && obs.kind === 'price_observation' ? (obs.attributes.metadata as { provider: string }).provider : null).toBe('cardkingdom');26 });27});28