SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
1.3 KB · 28 lines typescript
Raw Blame History
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