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, { slabCategory } from './index.js'; const connector = createConnector(localMeta(meta)); describe('myslabs', () => { runFixtureSuite(connector, it, expect); it('classifies slab titles', () => { expect(slabCategory('2025 Prizm FIFA Manga Kylian Mbappe BGS 9.5', null)).toBe('soccer_cards'); expect(slabCategory('1999 Pokemon Base Set Charizard Holo PSA 9', null)).toBe('pokemon'); expect(slabCategory('Amazing Spider-Man #300 CGC 9.8 1988', null)).toBe('marvel_comics'); expect(slabCategory('2003 Topps Chrome LeBron James Rookie PSA 10', null)).toBe('basketball_cards'); expect(slabCategory('Random vase', null)).toBeNull(); }); it('records sold-out slabs as sold listings, never as sales', async () => { for (const name of listFixtures('myslabs')) { const out = await connector.normalize(loadFixture('myslabs', name).raw); for (const r of out) { expect(r.kind).toBe('listing'); if (r.kind === 'listing') { expect(['available', 'sold', 'unknown']).toContain(r.availability); expect(r.currency).toBe('USD'); } } } }); });