import { describe, expect, it } from 'vitest';
import { ConnectorMetaSchema } from '@rareindex/connectors';
import metaJson from './meta.json' with { type: 'json' };
import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
import createConnector, { parseCategoryPage, parseSpecimenPage } from './index.js';
const connector = createConnector(ConnectorMetaSchema.parse(metaJson));
describe('fossilera', () => {
runFixtureSuite(connector, it, expect);
it('emits one USD listing per unique specimen with the FossilEra item number', async () => {
const fx = loadFixture('fossilera', 'dinosaur-teeth-p1');
const out = await connector.normalize(fx.raw);
expect(out.length).toBeGreaterThanOrEqual(8);
for (const l of out) {
if (l.kind !== 'listing') throw new Error('expected listing');
expect(l.attributes.categorySlug).toBe('fossils');
expect(l.attributes.identifiers.fossilera_item).toMatch(/^\d+$/);
expect(l.currency).toBe('USD');
expect(l.seller).toBe('FossilEra');
expect(l.sourceUrl).toMatch(/fossilera\.com\/fossils\//);
expect(l.attributes.metadata.unique_specimen).toBe(true);
}
const reduced = out.find((l) => l.kind === 'listing' && l.attributes.metadata.previous_price_usd);
expect(reduced).toBeTruthy();
});
it('parsers handle cards, reduced prices and specimen details', () => {
const html = `