import { describe, expect, it } from 'vitest'; import { ConnectorMetaSchema } from '@rareindex/connectors'; import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; import metaJson from './meta.json' with { type: 'json' }; import createConnector, { categoryFor, parseLotsPage, parseResultsList, parseUkDate } from './index.js'; const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); describe('historics', () => { runFixtureSuite(connector, it, expect); it('maps lots to GBP hammer sales dated by the sale', async () => { const fx = loadFixture('historics', 'lots-page'); const out = await connector.normalize(fx.raw); expect(out.length).toBeGreaterThan(0); for (const r of out) { if (r.kind !== 'sale') throw new Error('expected sale'); expect(r.currency).toBe('GBP'); expect(r.buyerPremiumIncluded).toBe(false); expect(r.attributes.identifiers.historics_lot).toMatch(/^\d+$/); expect(r.sourceUrl).toMatch(/^https:\/\/www\.historics\.co\.uk\/auction\/lot\//); expect(r.auctionHouse).toBe('Historics Auctioneers'); } }); it('parses dates, the results list and lot cards', () => { expect(parseUkDate('18th Jul, 2026 9:30')).toEqual(new Date(Date.UTC(2026, 6, 18))); expect(parseUkDate('6th Aug, 2026 19:30')).toEqual(new Date(Date.UTC(2026, 7, 6))); const list = `
Sold for an undisclosed fee