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.4 KB · 30 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, { primarySet, setPrefix } from './index.js';67const connector = createConnector(localMeta(meta));89describe('digimoncard', () => {10  runFixtureSuite(connector, it, expect);1112  it('derives the primary set from the card number prefix', () => {13    expect(setPrefix('BT5-103')).toEqual({ prefix: 'BT5', code: 'BT-05' });14    expect(setPrefix('ST1-03').code).toBe('ST-1');15    expect(primarySet('BT5-103', ['Promo', 'BT-05: Battle of Omni'])).toBe('BT-05: Battle of Omni');16    expect(primarySet('ST1-03', ['ST-1: Starter Deck Gaia Red', 'Trial Deck'])).toBe('ST-1: Starter Deck Gaia Red');17  });1819  it('emits digimon_tcg catalog items with tcgplayer ids when present', async () => {20    const [name] = listFixtures('digimoncard');21    const out = await connector.normalize(loadFixture('digimoncard', name!).raw);22    expect(out).toHaveLength(1);23    const c = out[0]!;24    if (c.kind !== 'catalog_item') throw new Error('expected catalog item');25    expect(c.attributes.categorySlug).toBe('digimon_tcg');26    expect(c.attributes.identifiers.digimoncard_id).toMatch(/^[A-Z]+\d*-\d+$/);27    expect(c.imageUrls[0]).toContain('images.digimoncard.io');28  });29});30