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.5 KB · 39 lines typescript
Raw Blame History
1import { describe, expect, it } from 'vitest';2import { ConnectorMetaSchema } from '@rareindex/connectors';3import metaJson from './meta.json' with { type: 'json' };4import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';5import createConnector, { parseCategoryPage, parseSpecimenPage } from './index.js';67const connector = createConnector(ConnectorMetaSchema.parse(metaJson));89describe('fossilera', () => {10  runFixtureSuite(connector, it, expect);1112  it('emits one USD listing per unique specimen with the FossilEra item number', async () => {13    const fx = loadFixture('fossilera', 'dinosaur-teeth-p1');14    const out = await connector.normalize(fx.raw);15    expect(out.length).toBeGreaterThanOrEqual(8);16    for (const l of out) {17      if (l.kind !== 'listing') throw new Error('expected listing');18      expect(l.attributes.categorySlug).toBe('fossils');19      expect(l.attributes.identifiers.fossilera_item).toMatch(/^\d+$/);20      expect(l.currency).toBe('USD');21      expect(l.seller).toBe('FossilEra');22      expect(l.sourceUrl).toMatch(/fossilera\.com\/fossils\//);23      expect(l.attributes.metadata.unique_specimen).toBe(true);24    }25    const reduced = out.find((l) => l.kind === 'listing' && l.attributes.metadata.previous_price_usd);26    expect(reduced).toBeTruthy();27  });2829  it('parsers handle cards, reduced prices and specimen details', () => {30    const html = `<a href="/fossils/x-tooth"><div class="image"><img alt="X Tooth #123" src="//assets0.fossilera.com/x.jpg"></div><div class="info"> 3.1" X Tooth - Montana <div class="price"><span class="old-price">$300</span> $250</div></div></a>`;31    const p = parseCategoryPage(html, 'u', 'fossils');32    expect(p.items).toHaveLength(1);33    expect(p.items[0]).toMatchObject({ item: '123', price: 250, oldPrice: 300, sold: false, title: '3.1" X Tooth - Montana', image: 'https://assets0.fossilera.com/x.jpg' });34    const detail = `<html><body><h1>Big Tooth</h1><div class="price">$1,000</div><div class="detail">SPECIES Tyrannosaurus rex</div><div class="detail">AGE Late Cretaceous</div><div class="detail">LOCATION Garfield County, Montana</div><div class="detail">FORMATION Hell Creek Formation</div><div class="detail">SIZE 3.95" tooth</div>ITEM #355472</body></html>`;35    const d = parseSpecimenPage(detail, 'https://www.fossilera.com/fossils/big-tooth', 'fossils');36    expect(d?.items[0]).toMatchObject({ item: '355472', price: 1000, species: 'Tyrannosaurus rex', formation: 'Hell Creek Formation', location: 'Garfield County, Montana', size: '3.95" tooth' });37  });38});39