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 '../../api/_lib/local-meta.js';4import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';5import createConnector, { parseItemMarkdown } from './index.js';67const connector = createConnector(localMeta(meta));89const SAMPLE = `Back1011# 2023 Bowman Chrome Prospect Autograph Purple Refractor Ludwing Espinoza \\#CPALE1213## Baseball Cards1415Serial207/2501617PSA101819Pop242021## List price2223### $452425Buy nowOffer2627## LT Value2829$183031### $12 - $293233PSA population3435### Recent transactions3637[\\38\\39AuctionAug 6, 2026\\40\\41$15](https://www.ebay.com/itm/278232527458)4243[\\44\\45Best offerSep 3, 2024\\46\\47$20](https://www.ebay.com/itm/405178094963)4849View all5051Listings5253[\\54\\55Fixed price\\56\\57$60\\58\\59live listing in eBay](https://www.ebay.com/itm/176907976889)60`;6162describe('alt-xyz', () => {63 runFixtureSuite(connector, it, expect);6465 it('parses item markdown', () => {66 const p = parseItemMarkdown(SAMPLE, 'abc')!;67 expect(p.title).toContain('Ludwing Espinoza #CPALE');68 expect(p.category).toBe('Baseball Cards');69 expect(p).toMatchObject({ grader: 'psa', grade: '10', pop: 24, listPrice: 45, listingKind: 'fixed_price', altValue: 18, altLow: 12, altHigh: 29, serial: '207/250' });70 expect(p.transactions).toEqual([71 { type: 'Auction', date: 'Aug 6, 2026', price: 15, url: 'https://www.ebay.com/itm/278232527458' },72 { type: 'Best offer', date: 'Sep 3, 2024', price: 20, url: 'https://www.ebay.com/itm/405178094963' },73 ]);74 });7576 it('normalises into observation + sales + listing', async () => {77 const raw = { url: 'https://alt.xyz/itm/abc', externalId: 'abc', kind: 'sale' as const, engine: 'firecrawl' as const, fetchedAt: new Date('2026-09-07T12:00:00Z'), payload: parseItemMarkdown(SAMPLE, 'abc') };78 const out = await connector.normalize(raw);79 const kinds = out.map((r) => r.kind);80 expect(kinds.filter((k) => k === 'sale')).toHaveLength(2);81 expect(kinds).toContain('price_observation');82 expect(kinds).toContain('listing');83 const sale = out.find((r) => r.kind === 'sale');84 if (sale && sale.kind === 'sale') {85 expect(sale.saleDate.toISOString()).toBe('2026-08-06T00:00:00.000Z');86 expect(sale.attributes.categorySlug).toBe('baseball_cards');87 expect(sale.grade.grader).toBe('psa');88 }89 for (const name of listFixtures('alt-xyz')) {90 const fx = await connector.normalize(loadFixture('alt-xyz', name).raw);91 expect(fx.length).toBeGreaterThan(0);92 }93 });94});95