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%
2.6 KB · 95 lines typescript
Raw Blame History
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[![eBay](https://x/e.png)\\38\\39AuctionAug 6, 2026\\40\\41$15](https://www.ebay.com/itm/278232527458)4243[![eBay](https://x/e.png)\\44\\45Best offerSep 3, 2024\\46\\47$20](https://www.ebay.com/itm/405178094963)4849View all5051Listings5253[![eBay](https://x/e.png)\\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