import { describe, expect, it } from 'vitest';
import { readFileSync } from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { ConnectorMetaSchema } from '@rareindex/connectors';
import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
import createConnector, { parseAuctionDates, parseLotsPage, parseResultsSlugs } from './index.js';
const dir = path.dirname(fileURLToPath(import.meta.url));
const meta = ConnectorMetaSchema.parse(JSON.parse(readFileSync(path.join(dir, 'meta.json'), 'utf8')));
const connector = createConnector(meta);
const MD = `# Monterey 2026
August 13-15
[View 1963 Ferrari 250 GT/L Berlinetta Lusso](https://www.mecum.com/lots/1175988/1963-ferrari-250-gt-l-berlinetta-lusso?aa_id=793591-0) [\\\\
\\\\
$1,650,000\\\\
\\\\
](https://www.mecum.com/lots/1175988/1963-ferrari-250-gt-l-berlinetta-lusso?aa_id=793591-0)
Lot S126
[Monterey 2026](https://www.mecum.com/auctions/monterey-2026/)
[1963 Ferrari 250 GT/L Berlinetta Lusso](https://www.mecum.com/lots/1175988/1963-ferrari-250-gt-l-berlinetta-lusso?aa_id=793591-0)
S/N 4635, The 79th of 350 Produced From 1962-64
[View 1969 Chevrolet Camaro](https://www.mecum.com/lots/1175999/1969-chevrolet-camaro?aa_id=1) [\\\\
\\\\
$50,000\\\\
\\\\
](https://www.mecum.com/lots/1175999/1969-chevrolet-camaro?aa_id=1)
Lot S127
`;
describe('mecum', () => {
runFixtureSuite(connector, it, expect);
it('parses lots, sold badges, results slugs and auction dates', () => {
const p = parseLotsPage(MD, 'monterey-2026', 1);
expect(p.auctionName).toBe('Monterey 2026');
expect(p.dateText).toBe('August 13-15');
expect(p.lots.length).toBe(2);
expect(p.lots[0]).toMatchObject({ lotId: '1175988', lotNumber: 'S126', sold: true, priceText: '$1,650,000', subtitle: 'S/N 4635, The 79th of 350 Produced From 1962-64' });
expect(p.lots[1]!.sold).toBe(false);
expect(parseResultsSlugs('')).toEqual(['monterey-2026', 'houston-2026']);
expect(parseAuctionDates('{\\"startDate\\":\\"2026-08-13T00:00:00+00:00\\",\\"endDate\\":\\"2026-08-15T00:00:00+00:00\\"}')).toEqual({ startDate: '2026-08-13T00:00:00+00:00', endDate: '2026-08-15T00:00:00+00:00' });
});
it('normalises only sold lots, dated by the auction start, premium unknown', async () => {
const payload = { ...parseLotsPage(MD, 'monterey-2026', 1), startDate: '2026-08-13T00:00:00+00:00', endDate: '2026-08-15T00:00:00+00:00' };
const out = await connector.normalize({ url: 'x', externalId: 'm', kind: 'sale', engine: 'firecrawl', fetchedAt: new Date('2026-09-07T00:00:00Z'), payload });
expect(out.length).toBe(1);
const s = out[0]!;
if (s.kind !== 'sale') throw new Error('sale');
expect(s).toMatchObject({ price: 1650000, currency: 'USD', buyerPremiumIncluded: null, lotNumber: 'S126', auctionHouse: 'Mecum Auctions' });
expect(s.saleDate.toISOString()).toBe('2026-08-13T00:00:00.000Z');
expect(s.attributes).toMatchObject({ brand: 'Ferrari', year: 1963, categorySlug: 'automobiles' });
});
it('fixture sales carry Mecum lot ids', async () => {
const out = await connector.normalize(loadFixture('mecum', 'lots-page').raw);
expect(out.length).toBeGreaterThan(0);
for (const r of out) if (r.kind === 'sale') expect(r.attributes.identifiers.mecum_lot_id).toMatch(/^\d+$/);
});
});